我指的是%w运算符/构造函数/无论你怎么称呼它,像这样使用:
%w{ foo bar baz }
=> ["foo", "bar", "baz"]
Run Code Online (Sandbox Code Playgroud)
我有几个问题:
%w"东西" 的正确名称是什么?操作?文字?构造函数?{}s代替[]s 是否重要?%w在另一个内部%w,以便创建嵌套数组)?我正在使用Rails 3.2.2,我想引用所有数组元素'并返回一个包含所有引用和逗号分隔元素的字符串.这时我正在使用
['a', 'b', 'c'].collect {|x| "'#{x}'"}.join(", ")
# => "'a', 'b', 'c'"
Run Code Online (Sandbox Code Playgroud)
但我认为我可以改进上面的代码(可能是通过使用一个未知的Ruby方法,如果它存在).可能吗?
我在这里遇到一个简单的if else链错误,我无法弄清楚发生了什么.我前几天开始学习ruby,我已经知道了一些java,并且只是想重新编写程序来更快地学习ruby.我想要计算元音和辅音.无论如何这里是我的代码......
#!/usr/bin/ruby/
alphabet = 'abcdefghijklmnopqrstuvwxyz'
array = alphabet.chars.to_a
vowel = 0
cons = 0
puts array.at(1)
for i in 0...26
if array.at(i) == "a"
vowel++
elsif array.at(i) == 'e'
vowel++
elsif array.at(i) == 'i'
vowel++
elsif array.at(i) == 'o'
vowel++
elsif array.at(i) == 'u'
vowel++
else
cons++
end#end if else chain
end#end for loop
puts 'Vowel: ' + vowel.to_s
puts 'Consonants: ' + cons.to_s
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
C:/ Users/Kelan/Documents/Programming/Ruby Files/Little Programs/Alphabet.rb:11:语法错误,意外的keyword_elsif elsif array.at(i)=='e'^
C:/ Users/Kelan/Documents/Programming/Ruby Files/Little Programs/Alphabet.rb:13:语法错误,意外的keyword_elsif elsif array.at(i)=='i'^
C:/ Users/Kelan/Documents/Programming/Ruby …
以下两个语句将生成相同的结果:
arr = %w(abc def ghi jkl)
Run Code Online (Sandbox Code Playgroud)
和
arr = ["abc", "def", "ghi", "jkl"]
Run Code Online (Sandbox Code Playgroud)
在哪些情况下应该%w使用?
在上面的例子中,我想要一个数组["abc", "def", "ghi", "jkl"].哪种理想方式:前者(带%w)或后者?
我知道我可以使用 %w() 作为创建数组的快捷方式。例如,这些应该是等效的:
FOO = %w(dog, cat)
BAR = ["dog", "cat"]
Run Code Online (Sandbox Code Playgroud)
但是当我include用来检查这些数组中包含的内容时:
FOO = %w(dog, cat)
BAR = ["dog", "cat"]
puts FOO.include? "dog" #false
puts BAR.include? "dog" #true
Run Code Online (Sandbox Code Playgroud)
第一个puts返回,false而第二个返回true。为什么会这样?