我有两位代码,据我所知,Ruby应该具有相同的功能。两者都在同一个初始化方法中:
class TicTacToePlayer
def initialize(player_type = { human: true })
# Here
end
end
第一个代码是标准的if / else语句:
if player_type[:human]
extend Human
else
extend Joshua
end
第二个就是上面的三元运算符:
player_type[:human] ? extend Human : extend Joshua
...
我希望两者功能相同,但是第一个运行顺利,第二个返回以下错误:
语法错误,意外tCONSTANT,期待keyword_do或' {'或者'(' ... yer_type [:human]?延伸人类:延伸约书亚#ternary op ...
为什么会有差异?
答案 0 :(得分:1)
使用括号进行函数调用
player_type[:human] ? extend(Human) : extend(Joshua)
答案 1 :(得分:1)
作为使用像@ mtm的答案这样的括号的替代方法,你也可以这样写:
extend player_type[:human] ? Human : Joshua