From the CLI, I would like to be able to enter integers as: 123_456_789
I currently used the below code for user data input:
def twinprimes_ssoz()
end_num = {ARGV[0].to_u64, 3u64}.max
start_num = ARGV.size > 1 ? {ARGV[1].to_u64, 3u64}.max : 3u64
..
..
It takes at least 1 or 2 positive 64-bit unsigned integers as inputs.
./twinprimes_ssoz 98123131 25484942
I’d like to enter the values as: ./twinprimes_ssoz 98_123_131 25_484_942
Can the std library
handle this, or do I need to write custom methods?
Pretty sure you can just do like ARGV[1].to_u64 underscore: true
.
Ref: String - Crystal 1.7.2
1 Like
That doesn’t work as is.
225 | end_num = {ARGV[0].to_u64 underscore true:, 3u64}.max
^
Error: unexpected token: ","
I think you typed/copy pasted it wrong.
I don’t understand your reply?
I need it to work in the context of the sample code I provided.
The String docs say this:
"12_345".to_i # raises ArgumentError
"12_345".to_i(underscore: true) # => 12345
I haven’t been able to manipulate it to run in that form.
Right, and the error said underscore true:,
and not underscore: true,
. Might also need ()
around it like you have above ^.
jzakiya
7
Excuse my dyslexia brought on by early stage dementia from acute old age senility. 
Thanks, this works.
end_num = {(ARGV[0].to_u64 underscore: true), 3u64}.max
start_num = ARGV.size > 1 ? {(ARGV[1].to_u64 underscore: true), 3u64}.max : 3u64
1 Like