有趣的問題,但有一些缺陷:
- 您使用
q
,cmd
和i
,從不將它們分配,這導致在測試中使用未定義的符號即時錯誤和程序中止或分配
- 您在
while
循環的頂部測試q
,但從未給出它的值(與之前的點相關)
- 您在向量中指定的分辨率爲
i
但從未設置爲1
第一
- 你誤會字符串連接是如何工作的
- 你誤解了如何從控制檯作品的輸入,這是從根本上通過線而不是性格讓你的方法有一個致命的設計問題(和
blocking
沒有區別)
- 你終止了錯誤的方式;您的哨點'
'的值仍被分配。
- 你打開控制檯,從來沒有關閉它(儘管這可能是確定與
stdin
)
- 你成長的結果VAR走錯了路,但相對於其他所有問題不要緊這裏
如果我們修的代碼少了,用更好的風格空格,沒有分號和<-
進行分配(所有個人/共同喜好),我們得到
con <- file("stdin")
open(con, blocking=TRUE)
cmd <- q <- ""
i <- 1
while (q != " ") {
q <- readChar(con,1)
cmd[i] <- q
i <- i+1
}
print(cmd) # for exposition only
close(con)
,並注意最後print
而不是eval
,我們得到這個(我輸入的命令ls
字母后面的空格)
$ Rscript /tmp/marcusloecher.R
ls
[1] "l" "s" " "
$
我建議你看看readLines()
代替。
現在,我檢查,我明白你也從來沒有接受你問的問題的答案。這是一個有趣的結果,來自我們領域的人有時將自己定義爲所有關於獎勵...
感謝您的答覆,我真的很感謝。爲了我的辯護,(i)我的工作(!)代碼與您的代碼類似,我只是不想用明顯的初始化步驟來混淆我的問題(爲了簡潔起見,我想這個論壇中的任何人都可以運行如果需要的話),(ii)我不接受答案是一種非故意的監督,將來會改變這種情況。 (也就是說,我總共有7個問題,其中5個是有回答的,所以「從不」有點強烈)。我真正的問題確實是你的第五個子彈:我不能以char的形式讀取char,只能讀取行嗎? –
我沒有把你帶到「未回答」問題的任務 - 你對此有限的控制。我帶你去接受「未被接受的」問題 - 七個人中有七人犯了這個錯誤。這只是不好的做法。因此,環顧網站並看到綠色的「勾號」 - 「接受的問題」。 (同樣:列表格式中的「綠色」分數boxen。)這是一個信號*你*預計會給你開始的問題線程的讀者。參見eg [here](http://stackoverflow.com/help/someone-answers)以及[here](http://stackoverflow.com/help/accepted-answer)。 –
我現在很困惑:你的意思是「接受答案」(而不是問題)?到目前爲止,我本來只能做到5次,回想起來已經接受了2個答案,thx讓我注意到了這一點。現在,我希望能夠接受我的問題的答案,即是否可以真正閱讀炭字符,就像我可以在C中輕鬆完成的一樣。 –