第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

應(yīng)該警告新手的Ruby Gotchas是什么?

應(yīng)該警告新手的Ruby Gotchas是什么?

繁星點點滴滴 2019-12-07 16:47:22
我最近學(xué)習(xí)了Ruby編程語言,總而言之,它是一門好語言。但是令我驚訝的是,它并不像我期望的那么簡單。更準(zhǔn)確地說,“最小驚喜規(guī)則”在我看來并不十分受人尊敬(當(dāng)然,這是非常主觀的)。例如:x = true and falseputs x  # displays true!和著名的:puts "zero is true!" if 0  # zero is true!您會警告Ruby新手的其他“陷阱”是什么?
查看完整描述

3 回答

?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗 獲得超4個贊

以下代碼使我感到驚訝。我認(rèn)為這是一個危險的陷阱:既容易遇到,又難以調(diào)試。


(1..5).each do |number|

  comment = " is even" if number%2==0

  puts number.to_s + comment.to_s

end

打?。?/p>


1

2 is even

3

4 is even

5

但是如果我在塊之前添加comment =任何內(nèi)容 ...


comment = nil

(1..5).each do |number|

  comment = " is even" if number%2==0

  puts number.to_s + comment.to_s

end

然后我得到:


1

2 is even

3 is even

4 is even

5 is even

基本上,當(dāng)僅在塊內(nèi)部定義變量時,然后在塊末尾銷毀該變量,然后nil在每次迭代時將其重置為。通常就是您所期望的。但是如果變量是該塊之前所定義,然后將外變量用于塊內(nèi),并且它的值是因此迭代之間持久的。


一種解決方案是改為編寫此代碼:


comment = number%2==0 ? " is even" : nil

我認(rèn)為很多人(包括我在內(nèi))傾向于寫“ a = b if c”而不是“ a = (c ? b : nil)”,因為它更具可讀性,但顯然有副作用。


查看完整回答
反對 回復(fù) 2019-12-07
  • 3 回答
  • 0 關(guān)注
  • 623 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號