Day2 讀書筆記&心得體會

一芥备、讀書筆記
2.2 Ruby的一些基礎(chǔ)知識

  • 先舉個Ruby函數(shù)的例子:
def say_goodnight(name)
     result = "Good night, " + name
     return result
end
puts say_goodnight('john')
puts say_goodnight('link')

result不用聲明,被賦值的時候便存在了媒惕。
puts say_goodnight('john')是含有兩個方法独令,say_goodnight('john')這個方法的參數(shù)傳給puts,puts是顯示函數(shù)
還有另外一種寫法是一樣的道理:

puts(say_goodnight('john'))
  • Ruby對單引號處理的少愕秫,對單引號字符串有更多的處理,首先焰络,他尋找以反斜杠開始的序列戴甩,并用二進制替換他們,其中最常見的是\n舔琅,他會被回車符替換掉等恐。舉個例子:
puts "good night,\n grandama"

輸出:
good night,
grandama

  • Ruby對雙引號字符串做的第二件事情是,表達式內(nèi)插(expression interinterpolation)备蚓,#{表達式}序列會被“表達式”的值替換课蔬,可以用這種方式重寫前面的方法。
def say_goodnight(name)
     result = "Good night, #{name}"
     return result
end
puts say_goodnight('john')
puts say_goodnight('link')
  • Ruby構(gòu)建這個字符串對象時郊尝,它找到name的當前值并把它替換到字符串中二跋,任意復雜的表達式都允許放在#{...}結(jié)構(gòu)中,覺個例子:
def say_goodnight(name)
     result = "Good night, #{name.capitalize}"
     return result
end
puts say_goodnight('uncle')

結(jié)果:
good night流昏,Uncle

  • 如果表達式是一個全局實例或類變量扎即,則不需要提供花括號。
$greet = "Hello" # $greet是全局變量
@name = "Produce" # @name是實例變量
puts "#$greet,  #$name"
  • 其實况凉,可以進一步簡化谚鄙,把臨時變量和return語句拿掉
def say_goodnight(name)
     "Good night, #{name.capitalize}"
end
puts say_goodnight('uncle')

結(jié)果是一樣的

  • 總結(jié):
    全局變量用美元符號($),實例變量用(@)刁绒,類變量用兩個“at”(@@)闷营,最后,類常量知市、模塊名和常量傻盟,都必須以一個大寫字母開始。

2.3 數(shù)組和散列表

  • Ruby的數(shù)組和散列表(hashes)是被索引的收集(indexed collection)嫂丙,兩者都存儲對象的集合娘赴,通過鍵(key)來訪問。
  • 數(shù)組鍵只能是整數(shù)跟啤,散列可以是任意對象诽表。

2.4 控制結(jié)構(gòu)

  • Ruby具有所有常見的控制結(jié)構(gòu),如if語句和while循環(huán)語句
  • 語句修飾符
if dog > 10
    puts "danger, run away!"
end

可以改成這樣:

puts "danger, run away!" if dog > 10

while循環(huán)語句也是如此

2.5 正則表達式

  • 《精通正則表達式》
  • 正則表達式是對象并且可以當做對象來操作
  • 什么是模式(pattern)隅肥,句個例子:
    /perl|ython/
    他會匹配perl或Python的字符串
    前面那個斜線界定了模式关顷,模式由要匹配的兩個字符串組成,它們被管道符(|)分開武福,管道符的意思就是要么左邊,要么右邊痘番。
  • 可以在模式中使用括號:/p(erl|ython)/
  • 也可以在模式中指定重復(repettion)捉片,/ab+c/匹配了一個含有a平痰,后面跟著一個或多個b,其后是c的字符串伍纫,把模式中的加號改成星號宗雇,/ab*c/創(chuàng)建了一個匹配含有a,零個或者多個b然后是c的表達式莹规,
  • 也可以在模式中一組或多組字符赔蒲,一些常見的字符類(character classes),如\s良漱,它匹配空白字符(空格符舞虱,制表符,回車換行符等等)母市;\d矾兜,匹配任何數(shù)字;\w患久,匹配會出現(xiàn)在一個詞內(nèi)的任何字符椅寺。一個點(.)匹配幾乎任意字符。
    可以用它們產(chǎn)生一些有用的表達式:
    /\d\d:\d\d:\d\d/ # 時間 12:34:12
    /Perl.*Python/ # Perl蒋失,零個或多個別的字符返帕,然后是Python
    /Perl Python/ # Perl,一個空格和Python
    /Perl *Python/ # Perl篙挽,零個或多個空格荆萤,和Python
    /Perl +Python/ # Perl,一個或多個空格嫉髓,和Python
    /Perl\s+Python/ # Perl观腊,空格字符,然后是Python

二算行、心得體會
今天的收獲梧油?一大堆rails函數(shù)

  • super 表示調(diào)用父類的同名函數(shù),并將本函數(shù)的所有參數(shù)傳入父類的同名函數(shù)州邢;
  • split 把對象以某種格式分割成一個數(shù)組
  • singularize 復數(shù)變成單數(shù)
  • remove 以某種格式去掉對象中的元素或者轉(zhuǎn)換對象中的元素位置
  • try 這個整不明白儡陨??
  • ActionController::Parameters 動作控制器參數(shù)
    為了防止暴露不應暴露的屬性量淌,有要求(require)和許可(permit)兩種方法骗村,前者用
    于根據(jù)需要標記參數(shù),后者用于按照允許的方式設(shè)置參數(shù)呀枢,并限制允許批量更新的屬性胚股。

我對代碼的理解:

class Admin::ApplicationController < ApplicationController # Admin::Application繼承父類Application
  before_action :top_module_for_namespace #在執(zhí)行這個文件的下面這些代碼之前,先執(zhí)行這行代碼裙秋,獲取頂級module
  before_action :sign_in_required #登陸
  before_action :permission_required #權(quán)限驗證
  before_action :create_log #建立日志

  def model
    self.class.name.remove(/^Admin|Controller$/).singularize.safe_constantize #去掉類名中的Admin和controller琅拌,變成單數(shù)缨伊,返回
  end
  
  def top_module_for_namespace
    self.class.name.split('::').second.safe_constantize #這個類本身的名稱以'::'分割成一個數(shù)組,并且第取出二個值
  end

  def sign_in_required
   return if current_user #如果用戶已經(jīng)登陸的話进宝,則返回.....刻坊,否則提示無權(quán)限,并跳轉(zhuǎn)到登陸頁
   respond_to do |format|
      format.html { render template: 'admin/application/sign_in', layout: false }
      format.json { render json: {}, status: :unauthorized }
    end
   end

  def crud
    @record ||= model.find(params[:id]) if params[:id] #如果@record沒有值的話党晋,就把后面的一大串賦值給它
    @record ||= model.new # 新建一個記錄
    @record = model.new(ActionController::Parameters.new(@record.attributes).permit(*model.admin_fields)) if @record.try(:id) && params[:action] == 'new' && params[:id].present?
    #動作控制器參數(shù)
    @record.attributes = param.permit(*model.admin_fields) #attributes
    @saved = @record.save if !request.get? && model.admin_fields.present?
    respond_with_record
  end
end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谭胚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子未玻,更是在濱河造成了極大的恐慌灾而,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件深胳,死亡現(xiàn)場離奇詭異绰疤,居然都是意外死亡,警方通過查閱死者的電腦和手機舞终,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門轻庆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人敛劝,你說我怎么就攤上這事余爆。” “怎么了夸盟?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵蛾方,是天一觀的道長。 經(jīng)常有香客問我上陕,道長桩砰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任释簿,我火速辦了婚禮亚隅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘庶溶。我一直安慰自己煮纵,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布偏螺。 她就那樣靜靜地躺著行疏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪套像。 梳的紋絲不亂的頭發(fā)上酿联,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音,去河邊找鬼贞让。 笑死采幌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的震桶。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼征绎,長吁一口氣:“原來是場噩夢啊……” “哼蹲姐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起人柿,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤柴墩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后凫岖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體江咳,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年哥放,在試婚紗的時候發(fā)現(xiàn)自己被綠了歼指。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡甥雕,死狀恐怖踩身,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情社露,我是刑警寧澤挟阻,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站峭弟,受9級特大地震影響附鸽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瞒瘸,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一坷备、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挨务,春花似錦击你、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至朝巫,卻和暖如春鸿摇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背劈猿。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工拙吉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留潮孽,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓筷黔,卻偏偏與公主長得像往史,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子佛舱,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 一椎例、讀書筆記回顧昨天的收獲:什么是block、proc请祖? block和proc是兩種不同的東西, block有形無...
    柳輝閱讀 377評論 0 0
  • 一订歪、讀書筆記2.6 Block和迭代器 本節(jié)簡單描述Ruby的一個獨特特性,Block肆捕,一種可以和方法調(diào)用相關(guān)聯(lián)的...
    柳輝閱讀 261評論 0 0
  • 一刷晋、心得體會 今天完成了什么 看了20頁的鎬頭書 學了bag的10個controller 收獲什么? 新增慎陵、編輯都...
    柳輝閱讀 343評論 0 0
  • # The Ruby Style Guide > Hey jude, don't make it bad. > T...
    司徒雷斯閱讀 320評論 0 2
  • 一眼虱、心得體會1、今天主要完成了什么荆姆? 今天主要看了互斥蒙幻、運行多個線程、Ruby調(diào)試器胆筒、Ruby基礎(chǔ)三章 10個co...
    柳輝閱讀 258評論 0 0