如果我跑:
"607.807-000".scan(/([[:digit:]]*)/)
Run Code Online (Sandbox Code Playgroud)
然后我回到数组:
["607", "", "807", "", "000", ""]
Run Code Online (Sandbox Code Playgroud)
扫描为什么匹配这些""字符?
在这里,我可以传递f参数的功能7-1,不带括号。
Prelude> f = (+1)
Prelude> f 7-1
7
Run Code Online (Sandbox Code Playgroud)
1. 为什么以下无限递归?
Prelude> addRec :: (Eq a, Num a) => a -> a; addRec 0 = 0; addRec n = n + addRec n-1;
Prelude> addRec 5
Run Code Online (Sandbox Code Playgroud)
2.
我可以通过添加括号来解决它n-1
Prelude> addRec :: (Eq a, Num a) => a -> a; addRec 0 = 0; addRec n = n + addRec (n-1);
Run Code Online (Sandbox Code Playgroud)
3.
或者$在整个addRec递归项上使用带括号的运算符:
Prelude> addRec :: (Eq a, Num a) => a …Run Code Online (Sandbox Code Playgroud) 在下面的代码中,arr意味着是一个二维数组,例如[[1,2],[4,5]].它计算子数组元素的总和.子数组只能有一个元素,在这种情况下,sum只是一个元素.
def compute(arr)
return nil unless arr
arr.map { |(a, b)| !b.nil? ? a + b : a }
end
Run Code Online (Sandbox Code Playgroud)
为什么代码必须|(a, b)|代替|a,b|?(a,b)Ruby 中的意思是什么?
我想匹配路径"/".我尝试了以下替代方案,前两个匹配,但我不知道为什么第三个不匹配:
/\A\/\z/.match("/") # <MatchData "/">
"/\A\/\z/".match("/") # <MatchData "/">
Regexp.new("/\A\/\z/").match("/") # nil
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?他们为什么不同?
怎样才能改变self在Array成为一个全新的阵列?我如何填写下面的评论部分?
class Array
def change_self
#make this array be `[5,5,5]`
end
end
Run Code Online (Sandbox Code Playgroud)
我理解这一点:为什么我不能改变自我的价值?并知道我不能只分配self给一个新对象.当我做:
arr = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
arr包含Array对象的引用.我可以在Array类中添加一个改变数组的方法,例如:
self[0] = 100
Run Code Online (Sandbox Code Playgroud)
但是有可能改变引用的数组的长度arr吗?这些值如何存储在Array对象中?