小编And*_*imm的帖子

确定一个数组是否包含ruby中另一个数组的内容

在ruby中,我如何测试一个数组不仅具有另一个数组的元素,而是以特定顺序包含它们?

correct_combination = [1, 2, 3, 4, 5]
[1, 5, 8, 2, 3, 4, 5].function_name(correct_combination) # => false
[8, 10, 1, 2, 3, 4, 5, 9].function_name(correct_combination) # => true
Run Code Online (Sandbox Code Playgroud)

我尝试过使用include,但这用于测试是否[1,2,3].include?(2)真实.

ruby arrays

8
推荐指数
2
解决办法
8390
查看次数

Java:线程安全的RandomAccessFile

经过一些严肃的googleing后,我发现RandomAccessFile-class不是线程安全的.现在我可以使用一个信号量来锁定所有的读写操作,但我不认为它表现得非常好.理论上,应该可以一次执行多次读取和一次写入.我怎么能用Java做到这一点?有可能吗?

谢谢!

java multithreading locking thread-safety

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

其他解决方案/语言优于基于TCL的Expect?

令人惊讶的是Expect(TCL)如何自动化我通常无法做的很多事情.

我以为我可以通过阅读一本书深入了解Expect,但在我这样做之前,我想问一下是否有其他解决方案/语言可以做到Expect的工作?

例如.我读过人们将Expect与Awk和Perl进行比较.

Awk和Perl可以做同样的事情吗?

那么像Python和Ruby这样的其他语言呢?

Expect是事实上的自动化工具还是其他解决方案/语言更优越?

python perl awk tcl expect

8
推荐指数
2
解决办法
1492
查看次数

解决红宝石中的旅行商问题(50多个地点)

我在一家快递公司工作.我们目前通过"手"解决了50多个地点的路线.

我一直在考虑使用谷歌地图API解决这个问题,但我已经读到有24点的限制.

目前我们在服务器中使用rails,所以我正在考虑使用ruby脚本来获取50多个位置的坐标并输出合理的解决方案.

你会用什么算法来解决这个问题?

Ruby是一种很好的编程语言来解决这类问题吗?

你知道任何现有的ruby脚本吗?

ruby algorithm google-maps ruby-on-rails traveling-salesman

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

如何在1.9.2中分析Ruby代码?

我可以用什么来分析1.9.2中的代码?所有版本的ruby-prof我都发现了针对1.9.2的段错误.

例如,当我添加

gem "ruby-prof"
Run Code Online (Sandbox Code Playgroud)

到我的Rails项目的Gemfile并运行

bundle
bundle exec ruby-prof config/environment.rb
Run Code Online (Sandbox Code Playgroud)

我得到了一个段错误.

镇上有新的剖析宝石吗?有没有办法让ruby-prof玩得好听?

ruby profiling ruby-prof

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

如何在Ruby中定义/命名块?

numbers = 1..10
print numbers.map {|x| x*x}

# I want to do:
square = {|x| x*x}
print numbers.map square
Run Code Online (Sandbox Code Playgroud)

因为语法更简洁.我有办法做到这一点,而不必使用def+ end

ruby

8
推荐指数
2
解决办法
2375
查看次数

Ruby的Enumerable#zip是否在内部创建数组?

Ruby中 -有人说,优雅地比较两个枚举器

zip的问题在于它在内部创建数组,无论你通过什么Enumerable.输入参数的长度还有另一个问题

我看了一下YARV中Enumerable#zip的实现,并看到了

static VALUE
enum_zip(int argc, VALUE *argv, VALUE obj)
{
    int i;
    ID conv;
    NODE *memo;
    VALUE result = Qnil;
    VALUE args = rb_ary_new4(argc, argv);
    int allary = TRUE;

    argv = RARRAY_PTR(args);
    for (i=0; i<argc; i++) {
        VALUE ary = rb_check_array_type(argv[i]);
        if (NIL_P(ary)) {
            allary = FALSE;
            break;
        }
        argv[i] = ary;
    }
    if (!allary) {
        CONST_ID(conv, "to_enum");
        for (i=0; i<argc; i++) {
            argv[i] = rb_funcall(argv[i], conv, 1, ID2SYM(id_each));
        }
    }
    if (!rb_block_given_p()) { …
Run Code Online (Sandbox Code Playgroud)

c ruby yarv array-merge

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

我可以覆盖用C编写的Ruby方法吗?

是否有可能覆盖属于Ruby本身的方法,例如rb_error_frozen用C语言编写的Ruby代码?

背景:我想知道在修改冻结对象时是否可以使Ruby仅记录警告,而不是引发异常.这样,我可以记录各种状态修改,而不是在第一个修改时停止.

我主要是想用YARV来做这件事,但如果能让它变得更容易,我可以使用另一个实现.

是的,这是一个崭新的项目!不要在生产环境中尝试这个!

c ruby overriding

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

要求命令在Snow Leopard上的bash irb中不起作用

我正在研究Zed Shaw的"学习Ruby艰苦之路"练习25

http://ruby.learncodethehardway.org/ex25.html

当我导航到保存ruby文件ex25.rb的目录并启动IRB时,我收到以下错误:

Larson-2:~ larson$ cd Ruby
Larson-2:Ruby larson$ ls
ex25.rb
Larson-2:Ruby larson$ irb
ruby-1.9.2-p290 :001 > require 'ex25'
LoadError: no such file to load -- ex25
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from (irb):1
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
ruby-1.9.2-p290 :002 > 
Run Code Online (Sandbox Code Playgroud)

似乎require命令在这里不起作用.有什么我想念的吗?

我也尝试按照建议要求'./25'并得到以下错误:

Larson-2:Ruby larson$ irb
ruby-1.9.2-p290 :001 > require './ex25'
SyntaxError: /Users/larson/Ruby/ex25.rb:1: invalid multibyte char (US-ASCII)
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from (irb):1
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
Run Code Online (Sandbox Code Playgroud)

ruby irb learn-ruby-the-hard-way

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

如何在像instance_eval方法的块中更改self?

instance_eval方法在其块中更改self,例如:

class D; end
d = D.new
d.instance_eval do
  puts self  # print something like #<D:0x8a6d9f4>, not 'main'!
end
Run Code Online (Sandbox Code Playgroud)

如果我们定义一个方法selfelf(或任何其他方法(除了instance_eval)接受一个块),当print self时,我们将得到'main',这与instance_eval方法不同.eg:

[1].each do |e|
  puts self  # print 'main'
end
Run Code Online (Sandbox Code Playgroud)

如何定义像instance_eval这样的方法(采用块)?提前致谢.

ruby metaprogramming self

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