2010-07-19 52 views
2

我正在學習如何使用J通過在線閱讀和使用此語言再次執行一些舊的Java任務,並想知道如何製作不帶任何操作數的動詞,或返回任何結果。原因是:我想讓自己能夠輸入一個動詞,我們稱它爲go,它會自行運行一系列代碼並保存它在執行時產生的任何數據,但根本不顯示任何數據。這樣做的總體目標是最終能夠重現我的自動售貨機類和界面,它至少需要void returnChange()方法。J中的無效動詞

回答

3

調用J動詞總是用至少一個正確的參數完成。將任何內容發送到一個完全忽略正確參數的單數動詞(例如0'')。

函數總是返回一些內容,但使用i.0''可以最小化返回的數據。

go =: 3 : 0 
    NB. do stuff 
    i. 0 
) 

go '' 
+0

MPelletier是正確的 - J和APL之間的區別之一是你不能指定無adic操作符。複製void函數行爲的唯一方法是傳遞一個不會返回任何有趣內容的參數,並依靠副作用來完成想要完成的任務。 – estanford 2010-08-07 10:57:45

1

MPelletier是正確的,殲動詞總是需要正確的參數產生結果,並在執行他們必然產生的結果。副詞和連詞的情況類似。 J中的任何內容都與「返回無效」的方法類似。

MPelletier提供的示例使用關鍵字'return'。在這種情況下,關鍵字不起作用。該程序的修改後的版本在這裏提供:

go =: 3 : 0 
    NB. do stuff 
    i. 0 0 
) 

這個程序和一個張貼MPelletier之間的顯着區別是,如果在控制檯中執行的,它不會出現下一個提示之前產生一個空行。 (任何從_2形狀到零的結果都會產生這種效果。)