2
我只是試圖運行一些代碼,看起來像這樣使用ruby's'case'/'when'方法與||或&&運營商等
def get_proj4(srid, type=nil)
type.downcase! if type
case type
when nil || "epsg"
open("http://spatialreference.org/ref/epsg/#{srid}/proj4/").read
when "esri"
open("http://spatialreference.org/ref/esri/#{srid}/proj4/").read
end
end
,並沒有正常運行,返回零每次。包裹在括號中的nil || "epsg"
沒有工作,要麼
原來紅寶石不會允許我使用||
運營商在這個
現在假設紅寶石需要的情況下/時方法,並最終將其分解成一組條件看起來像
x = type
if x == (nil || "epsg")
y = ...runs code...
elsif x == "esri"
y = ...
end
x = nil
y
但顯然它沒有。這裏發生了什麼?
由於
ahh'x == nil || 「epsg」**確實**匹配零**但**,因爲線路繼續評估,所以它必須從該匹配中繼續,因爲||的性質。運算符,即'(nil || false)=> next'。然後它不匹配「epsg」,並且它與下一個......(?)那種有道理 –
@boulder_ruby如果它是這樣寫的,那麼是的 - 但它總是一個真理表達式(作爲'anything ||「espg」'是truthy),所以它不應該匹配任何其他分支。 – user2246674
零不是「任何」。什麼是什麼?紅寶石沒有對象!除了'對象',當然......呃..... –