LoginSignup
3
0

More than 5 years have passed since last update.

RubyでC言語のHello, World

Last updated at Posted at 2018-10-25

最近Rubyを学び始めて思いついた超くだらないネタです。。既出かは調べていないです。

ruby
def int(n)
end

def main(v, &f)
    begin
        f.call
    rescue LocalJumpError
    end
end

void = 0

### C言語のコード

#include <stdio.h>

int main(void) {
    printf("hello, world!\n");
    return 0;
}

###

ブロックについて学んでいて、(意味は全く異なりますが)ほぼC言語のコードに近いものを書けることに気づいて書いてみた次第です。。
本当はLocalJumpErrorの例外処理はゴリ押しせず何かしら別な手段(lambdaにキャストとか?...lambdaだとエラーにならない...みたいな記事を見たのですがエラーになったりしてよくわかりませんでした...)で対処したかったのですが、まぁ面倒だし今回はこれでいいかとあきらめちゃいました(苦笑)

おやじギャグみたいなもんだと思ってくれれば幸いですw

10/26 追記

アドバイスを受けrescueを使わない形を考えてみました

ruby
lambda {

def int(n)
end

def main(v, &f)
    f.call
# rescue LocalJumpError
end

void = 0

### C言語のコード

#include <stdio.h>

int main(void) {
    printf("hello, world!\n");
    return 0;
}

###

}.call

バージョンが2.4.1以前だとトップレベルで値を返すことができないみたいでした1ので、lambda {...}.callで囲んでみました


  1. 自分の環境はruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-msys]でした 

3
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0