Ruby 为什么我在更改两行的顺序后得到零?
在Ruby 为什么我在更改两行的顺序后得到零?,ruby,Ruby,在titleize方法中,当我颠倒包含单词的行的顺序时,为什么会得到零。首先,大写和单词。join(“” def titleize(x) words = x.split(" ").collect do |word| if %w(the and over).include?(word) word else word.capitalize end end words.first.capitalize! words.join(" ") en
titleize
方法中,当我颠倒包含单词的行的顺序时,为什么会得到零。首先,大写和单词。join(“”
def titleize(x)
words = x.split(" ").collect do |word|
if %w(the and over).include?(word)
word
else
word.capitalize
end
end
words.first.capitalize!
words.join(" ")
end
为什么当我颠倒words.first.capitalize和words.join(“”)行的顺序时会得到零
这就是原因:
"abb".capitalize # => "Abb"
"Abb".capitalize! # => nil
"Abb".capitalize # => "Abb"
说:
通过将第一个字符转换为大写,将其余字符转换为小写来修改str如果未进行任何更改,则返回nil。注:大小写转换仅在ASCII区域有效
当你把行words.first.capitalize
在方法的末尾,String.capitalize代码>尝试将已大写的单词大写。您使用的是bang(!)
版本,因此,根据文档,您得到的是nil
一个例子:
def titleize(x)
words = x.split(" ").collect do |word|
if %w(the and of).include?(word)
word
else
word.capitalize
end
end
words.join(" ")
words.first.capitalize!
end
titleize("he great book") # => nil
测试时,您的输入字符串可能未包含此处列出的任何单词%w(和的)
。我建议你改用
为什么当我颠倒words.first.capitalize和words.join(“”)行的顺序时会得到零
这就是原因:
"abb".capitalize # => "Abb"
"Abb".capitalize! # => nil
"Abb".capitalize # => "Abb"
说:
通过将第一个字符转换为大写,将其余字符转换为小写来修改str如果未进行任何更改,则返回nil。注:大小写转换仅在ASCII区域有效
当你把行words.first.capitalize
在方法的末尾,String.capitalize代码>尝试将已大写的单词大写。您使用的是bang(!)
版本,因此,根据文档,您得到的是nil
一个例子:
def titleize(x)
words = x.split(" ").collect do |word|
if %w(the and of).include?(word)
word
else
word.capitalize
end
end
words.join(" ")
words.first.capitalize!
end
titleize("he great book") # => nil
测试时,您的输入字符串可能未包含此处列出的任何单词%w(和的)
。我建议你改用 上修改字符串的方法,如大写
(和gsub!
,delete!
等),仅在对字符串进行更改时返回该字符串。如果未进行任何修改,则返回nil
:
irb(main):007:0> "the".capitalize!
=> "The"
irb(main):008:0> "The".capitalize!
=> nil
很可能您的字符串已经大写(除非它以“The”、“and”或“over”开头),所以当您的大写时代码>最后一次调用,两者都大写
和您的方法返回nil
,因为字符串未被修改。上的方法修改字符串,如大写
(和gsub!
,delete!
等),仅在对字符串进行更改时返回该字符串。如果未进行任何修改,则返回nil
:
irb(main):007:0> "the".capitalize!
=> "The"
irb(main):008:0> "The".capitalize!
=> nil
很可能您的字符串已经大写(除非它以“The”、“and”或“over”开头),所以当您的大写时代码>最后一次调用,两者都大写
和您的方法返回nil
,因为该字符串未被修改。告诉我们您使用了哪个字符串,得到了nil
?这里有一个隐藏的actula答案。告诉我们您使用了哪个字符串,您得到了nil
?在英语中,我们不使用:-
。这不是风格上的决定,只使用:
是正确的标点符号,前面没有空格。此外,在句子中逗号后面有一个空格来分隔单词,就像没有逗号一样。@theTinMan感谢您更正它。我的英语不是很好!这是我的第三种语言:(在英语中,我们不使用:-
。这不是文体上的决定,只使用:
是恰当的标点符号,没有前面的空格。此外,句子中逗号后面有空格来分隔单词,就好像没有逗号一样。@theTinMan谢谢你纠正它。我的英语不太好!这是我的第三种语言:(