ruby - 为什么添加 c 扩展的 ruby​​ 代码不起作用?

标签 ruby rubygems inline-code

require "rubygems"
require "inline"

class Primes
  inline do |builder|
    builder.c '
    int prime(int num) {
    if (num == 2){ return 1;}
    if (num %2 == 0) {return 0;}
    int i = 3;
    while( i * i <= num)
    {
          if (num % i==0 )
          {
           return 0; 
           }
          i = i+2;
     }
     return 1;
    }'
  end
end

p = Primes.new

for num in 2..10_000 do
   is_prime = p.prime(num)
   if is_prime == 1
      puts "#{num} is a prime number"
   else
      puts "#{num} equals #{is_prime} * #{num/is_prime}"
   end
end

在执行这段 ruby​​ 代码时我遇到了很多错误......

/.rvm/gems/ruby-1.9.3-p362/gems/inline-0.1.0/lib/inline/history_buffer.rb:96: warning: else without rescue is useless
.rvm/gems/ruby-1.9.3-p362/gems/inline-0.1.0/lib/inline/history_buffer.rb:108: warning: else without rescue is useless
.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require':/.rvm/gems/ruby-1.9.3-p362/gems/inline-0.1.0/lib/inline/history_buffer.rb:93: syntax error, unexpected ':', expecting keyword_then or ',' or ';' or '\n' (SyntaxError)
            when nil: @position = length-1
                     ^
.rvm/gems/ruby-1.9.3-p362/gems/inline-0.1.0/lib/inline/history_buffer.rb:94: syntax error, unexpected keyword_when, expecting keyword_end
            when 0: @position = length-1 if @cycle
                ^
.rvm/gems/ruby-1.9.3-p362/gems/inline-0.1.0/lib/inline/history_buffer.rb:105: syntax error, unexpected ':', expecting keyword_then or ',' or ';' or '\n'
            when nil: @position = length-1
                     ^
.rvm/gems/ruby-1.9.3-p362/gems/inline-0.1.0/lib/inline/history_buffer.rb:106: syntax error, unexpected keyword_when, expecting keyword_end
            when length-1: @position = 0 if @cycle
                ^
.rvm/gems/ruby-1.9.3-p362/gems/inline-0.1.0/lib/inline/history_buffer.rb:106: syntax error, unexpected ':', expecting keyword_end
            when length-1: @position = 0 if @cycle
                          ^
.rvm/gems/ruby-1.9.3-p362/gems/inline-0.1.0/lib/inline/history_buffer.rb:128: syntax error, unexpected keyword_end, expecting $end
    end
       ^

最佳答案

您正在使用该 gem 的某个已废弃的旧版本。从来没有 SeattleRb 团队创建并称为 RubyInline 的版本.检查一下。

关于ruby - 为什么添加 c 扩展的 ruby​​ 代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15334621/

相关文章:

ruby - Ubuntu Launcher 未使用 RVM

mysql - 无法在 Windows 7 上安装 mysql gem

rubygems - 在 Jekyll 上运行 KaTeX?

javascript - JavaScript 中的内联 webgl 着色器代码

asp.net-mvc - Webform 属性上的内联代码

css - 在tinymce中嵌入php js html代码,可能吗?

ruby - Xpath 在 Nokogiri 中不返回任何内容

ruby-on-rails - 在 Rails 中获取当前路径名

ruby - OS X Mountain Lion : gcc-4. 2 没有那个文件或目录

用于为 PyPI 包创建骨架的 python 工具?