我被要求:
使用名为
first_longer_than_second
的参数和另一个名为first
的参数定义名为second
的方法。如果传入的第一个单词大于或等于第二个单词的长度,则该方法将return true
。否则returns false
。
这是我提出的代码:
def first_longer_than_second(first, second)
if first >= second
return true;
else
return false;
end
end
我正在打电话:
first_longer_than_second('pneumonoultramicroscopicsilicovolcanoconiosis', 'k') #=> false
first_longer_than_second('apple', 'prune') #=> true
出于某种原因,在repl.it上我只得到输出false
我在平台上收到此错误消息,我实际上是要完成此任务:
expected #<TrueClass:20> => true
got #<FalseClass:0> => false
Compared using equal?, which compares object identity,
but expected and actual are not the same object. Use
`expect(actual).to eq(expected)` if you don't care about
object identity in this example.
exercise_spec.rb:42:in `block (2 levels) in <top (required)>'
尝试了很多事情,但是看起来应该很简单的事情也很烦人......
答案 0 :(得分:3)
使用名为
first_longer_than_second
的参数和另一个名为first
的参数定义名为second
的方法。如果传入的true
字大于或等于first
字的长度,则该方法将返回second
。否则返回false
。
您的代码:
def first_longer_than_second(first, second)
if first >= second
return true;
else
return false;
end
end
首先,您的代码不符合要求。他们要求比较两个论点的长度。 if
条件应为:
if first.length >= second.length
请参阅String#length
的文档。
关于Ruby的语法,不需要语句后面的分号(;
)。就像在Javascript中一样,Ruby语句可以使用分号终止,也可以使用换行符终止。分号对于在同一行上分隔两个语句很有用。
接下来,与Javascript(以及许多其他语言)相同,您可以直接返回比较结果(而不是将其放入返回if
/ {{1的true
语句中}}):
false
使其看起来像Ruby(而不是Javascript或PHP)的最后一项改进:Ruby函数返回它计算的最后一个表达式的值;这会使def first_longer_than_second(first, second)
return first.length >= second.length
end
关键字的存在变得多余。
您的代码应为:
return