플랫 json 문서를 생성하는 명령 행 도구가 있습니다. 이 상상 :명령 줄 args에 nil을 지정하십시오.
$ ruby gen-json.rb --foo bar --baz qux
{
"foo": "bar"
"baz": "qux"
}
내가 원하는 것은이 작업을하는 것입니다
대신 널 (null)의$ ruby gen-json.rb --foo $'\0' --baz qux
{
"foo": null,
"baz": "qux"
}
나는 빈 문자열을 얻을. 문제를 단순화하기 위해 더욱이 고려 :
$ cat nil-args.rb
puts "argv[0] is nil" if ARGV[0].nil?
puts "argv[0] is an empty string" if ARGV[0] == ""
puts "argv[1] is nil" if ARGV[1].nil?
을 나는이 출력과 같이 실행하고 싶어 :
$ ruby nil-args.rb $'\0' foo
argv[0] is nil
을하지만 그 대신 내가 할
argv[0] is an empty string
나는이 의심 (틀림없이) 루비 인터프리터의 버그. argv [0]을 C 문자열로 처리하여 null이 종료됩니다.
추신 필요 했어 perl은 같은 방법으로 동작합니다 – jaybuff
ASCII에서 char 번호가 0 인 문자열이 빈 문자열이기 때문에? –
ASCII 코드 0은 C가 문자열 배열을 종료하는 데 사용하는 NUL입니다. 그래서 당신은 C - 문자열에 NUL을 가질 수 없습니다. 나는 루비 인터프리터가 문자열을 읽어야한다고 제안하고 그것이 단지 NUL이면 var를 nil로 설정한다. ARGV [0]의 유형이 더 이상 String이 아니기 때문에 아마 여러 가지 문제가 발생할 수 있습니다. 그래서 나는 내가 원하는 것이 가능하다고 생각하지 않는다. – jaybuff