我刚开始成为一名Full Stack Developer,我正在学习如何快速使用命令行,基本的Ruby语法等(初学者的东西!)。
我正在进行的当前练习要求我使用单个方法定义一个类,然后调用该方法。诀窍是给定的代码应该产生一个错误,我应该分析。
但是,即使给我输入我的irb控制台的代码,我也没有收到错误消息(我应该收到错误“TypeError:没有将Fixnum隐式转换为String”)。我只是......没什么。
我确信这很简单,但谷歌搜索“我怎么做出这个错误”(和类似的)遗憾的是没有帮助。我甚至觉得很愚蠢(即“我如何让这段代码破解?”),但重要的是我理解整个过程,在这里我很挣扎。
所以这就是应该产生错误“TypeError:没有将Fixnum隐式转换为String”:
class ArgumentEchoer
def echo_argument(argument)
p "You just inputted a value: " + argument
end
end
instance = ArgumentEchoer.new
instance.echo_argument(5)
这就是我在终端中所做的事情:
natalieimac-3:~ tabalie$ irb
irb(main):011:1> class ArgumentEchoer
irb(main):012:2> def echo_argument(argument)
irb(main):013:3> p "You just inputted a value: " + argument
irb(main):014:3> end
irb(main):015:2> end
irb(main):016:1> instance = ArgumentEchoer.new
irb(main):017:1> instance.echo_argument(5)
irb(main):018:1>
有什么想法吗?
答案 0 :(得分:0)
重读您的问题,看起来您实际上只是陷入了irb控制台中的语法错误。点击^C
几次然后重新开始。
您可以告诉我,因为 a)提示包含嵌入级别(例如...1>
,...2>
)和 b)这些行应该执行并且返回的值没有执行,表明irb正在等待它认为你在中间的任何表达式的句法结束。
判断你的irb是否挂起语法错误的一个好方法就是尝试输入任何简单的表达式,看看它是否返回一个值(由=>
输出表示)。这是最简单的例子:
$ irb
>> 1
=> 1
>>
如果您和irb陷入语法分歧,您将无法获得返回值:
$ irb
>> if
?> 1
>>
答案 1 :(得分:0)
以防万一其他人遇到这个......
我按照上面的建议 - 我退出了irb控制台并重新开始。现在它正常运作!
现在我的"真实"赋值 - 分析产生的错误:)
irb(main):019:0> irb_exit
natalieimac-3:~ tabalie$ irb
irb(main):001:0> class ArgumentEchoer
irb(main):002:1> def echo_argument(argument)
irb(main):003:2> p "You just inputted a value: " + argument
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> instance = ArgumentEchoer.new
=> #<ArgumentEchoer:0x007fc2ac0572a8>
irb(main):007:0> instance.echo_argument(5)
TypeError: no implicit conversion of Fixnum into String
from (irb):3:in `+'
from (irb):3:in `echo_argument'
from (irb):7
from /usr/bin/irb:12:in `<main>'
irb(main):008:0>