Class: Nydp::Builtin::Rand
Instance Method Summary
collapse
Methods included from Base
#builtin_invoke_4, #handle_error, #inspect, #invoke, #invoke_1, #invoke_2, #invoke_3, #invoke_4, #name, #nydp_type, #to_s
Methods included from Helper
#cons, #list, #literal?, #pair?, #sig, #sym, #sym?
Methods included from Converter
#n2r, #r2n
Instance Method Details
#builtin_invoke(vm, args) ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
|
# File 'lib/nydp/builtin/rand.rb', line 7
def builtin_invoke vm, args ;
if Nydp::NIL.is? args
builtin_invoke_1 vm
else
case args.size
when 1 ; builtin_invoke_2 vm, args.car
when 2 ; builtin_invoke_3 vm, args.car, args.cadr
else ; raise "rand: 0, 1 or 2 args expected, got #{args.length}"
end
end
end
|
#builtin_invoke_1(vm) ⇒ Object
4
|
# File 'lib/nydp/builtin/rand.rb', line 4
def builtin_invoke_1 vm ; vm.push_arg rand ; end
|
#builtin_invoke_2(vm, a) ⇒ Object
5
|
# File 'lib/nydp/builtin/rand.rb', line 5
def builtin_invoke_2 vm, a ; vm.push_arg rand(a) ; end
|
#builtin_invoke_3(vm, a0, a1) ⇒ Object
6
|
# File 'lib/nydp/builtin/rand.rb', line 6
def builtin_invoke_3 vm, a0, a1 ; vm.push_arg(a0 + rand(a1 - a0)) ; end
|