ios로 LINE 풍미에 IRB 할 수 있도록 한다

다음 버전의 PictRuby에서 채팅 스타일 인터페이스를 만들 수 있도록 했기 때문에 irb를 구현했다.



코드는 다음과 같은 느낌으로. 에러 핸들링은 과연 Objective-C 측에 쓰지 않으면 안 되겠다고 생각했지만, 예외 캐치하는 것만으로 잘 갔다. Ruby의 표현력은 역시 높다.
# # 10_irb
#
# ## Description
# Interactive Ruby Shell is a REPL.

def chat(input)
  begin
    eval(input)
  rescue Exception => e
    e.message
  end
end

일단 잘 작동했지만 왠지 로컬 변수를 정의 할 수 없기 때문에 다른 irb의 구현을 바라 보았습니다.



web-irb


>> a = [1, 2, 3]
=>[1, 2, 3]
=>NoMethodError: undefined method 'a' for main

같은 현상이 일어나고 있다!
>> @a = [1, 2, 3]
>> @a
=>[1, 2, 3]

멤버 변수로 정의하면 제대로 유지된다.

mirb



mruby 표준 첨부 녀석
$ git clone https://github.com/mruby/mruby.git
$ rake
$ ./bin/mirb 
mirb - Embeddable Interactive Ruby Shell

> a = 1
a = 1
 => 1
> a
a
 => 1

mirb는 제대로 로컬 변수를 사용할 수 있는 것 같다. 뭔가 실제로 차이가 있을지도. (그 중 소스를 읽자)

요약



어쨌든 web-irb는 동일했기 때문에 조금 안심했다 (뭐가). 멤버 변수를 사용한다는 도망길도 발견되었으므로 우선 구현 우선으로 진행한다.

좋은 웹페이지 즐겨찾기