小编evi*_*ing的帖子

当我要求它匹配数字时,为什么扫描匹配""字符?

如果我跑:

"607.807-000".scan(/([[:digit:]]*)/)
Run Code Online (Sandbox Code Playgroud)

然后我回到数组:

["607", "", "807", "", "000", ""]
Run Code Online (Sandbox Code Playgroud)

扫描为什么匹配这些""字符?

ruby regex

2
推荐指数
1
解决办法
47
查看次数

当我在另一个函数的应用程序内部应用参数为n-1(无括号)的函数时,为什么会有无限递归?

在这里,我可以传递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)

haskell

2
推荐指数
1
解决办法
114
查看次数

为什么我不能使用| a,b | 而不是|(a,b)| 在arr.map {|(a,b)|中 !b.nil??a + b:a}?

在下面的代码中,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 中的意思是什么?

ruby

1
推荐指数
1
解决办法
55
查看次数

这三种编写Ruby正则表达式的替代方法有什么区别?

我想匹配路径"/".我尝试了以下替代方案,前两个匹配,但我不知道为什么第三个不匹配:

/\A\/\z/.match("/")                # <MatchData "/">
"/\A\/\z/".match("/")              # <MatchData "/">
Regexp.new("/\A\/\z/").match("/")  # nil
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?他们为什么不同?

ruby regex

1
推荐指数
1
解决办法
111
查看次数

是否可以改变Array对象的长度?

怎样才能改变selfArray成为一个全新的阵列?我如何填写下面的评论部分?

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对象中?

ruby arrays

0
推荐指数
1
解决办法
60
查看次数

标签 统计

ruby ×4

regex ×2

arrays ×1

haskell ×1