小编Cha*_*ham的帖子

Gem::Ext::BuildError: 错误: 无法构建 gem 本机扩展。在 VScode 中运行捆绑程序安装时不断收到此消息

我正在尝试在 Windows 版 vscode 上运行捆绑程序安装,但每次这样做时,我都会收到相同的消息:

Fetching gem metadata from https://rubygems.org/.......
Resolving dependencies...
Using bundler 2.1.4
Fetching byebug 11.1.3
Installing byebug 11.1.3 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /home/chadcunn/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/byebug-11.1.3/ext/byebug
/home/chadcunn/.rbenv/versions/2.7.1/bin/ruby -I /home/chadcunn/.rbenv/versions/2.7.1/lib/ruby/2.7.0 -r ./siteconf20200718-7409-qq2a6i.rb extconf.rb
creating Makefile

current directory: /home/chadcunn/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/byebug-11.1.3/ext/byebug
make "DESTDIR=" clean

current directory: /home/chadcunn/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/byebug-11.1.3/ext/byebug
make "DESTDIR="
compiling breakpoint.c
compiling byebug.c
compiling context.c
compiling locker.c
compiling threads.c
linking shared-object byebug/byebug.so

current directory: /home/chadcunn/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/byebug-11.1.3/ext/byebug
make "DESTDIR=" install
/usr/bin/install -c -m 0755 byebug.so ./.gem.20200718-7409-z7mdim/byebug

Permission …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems ruby-on-rails bundler visual-studio-code

15
推荐指数
2
解决办法
7万
查看次数

为什么我的过滤器方法没有删除一些应该删除的元素?

我正在尝试创建一个名为 filer_out 的方法!它接受一个数组和一个 proc,并返回相同的数组,但每个元素在通过 proc 时都返回 true,但需要注意的是我们不能使用 Array#reject!

我是这样写的:

def filter_out!(array, &prc)
    array.each { |el| array.delete(el) if prc.call(el)}
end

arr_2 = [1, 7, 3, 5 ]
filter_out!(arr_2) { |x| x.odd? }
p arr_2
Run Code Online (Sandbox Code Playgroud)

但是当我运行代码时,打印出来的是:

[7, 5]
Run Code Online (Sandbox Code Playgroud)

即使答案应该是:

[]
Run Code Online (Sandbox Code Playgroud)

在查看解决方案后,我看到首先使用了 Array#uniq:

def filter_out!(array, &prc)
    array.uniq.each { |el| array.delete(el) if prc.call(el) }
end

arr_2 = [1, 7, 3, 5 ]
filter_out!(arr_2) { |x| x.odd? }
p arr_2
Run Code Online (Sandbox Code Playgroud)

并显示了正确的输出:

[]
Run Code Online (Sandbox Code Playgroud)

所以我想我的问题是,为什么必须使用 Array#uniq 才能获得正确的解决方案?感谢您的帮助!

ruby array-unique proc

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