我知道Ruby,幾乎所有東西都是表達式。即使是其他語言的語句,例如if-else
語句,case
語句,賦值語句,循環語句也是Ruby中的表達式。Ruby中的語句和表達有什麼區別?
所以我想從Ruby的觀點來看,語句和表達有什麼區別?
我知道Ruby,幾乎所有東西都是表達式。即使是其他語言的語句,例如if-else
語句,case
語句,賦值語句,循環語句也是Ruby中的表達式。Ruby中的語句和表達有什麼區別?
所以我想從Ruby的觀點來看,語句和表達有什麼區別?
Ruby和表達式之間沒有區別。所有東西都是一個表達式。
將表達式看作是句子的小部分。把這個陳述想成是完成的句子或思想。你的方法或循環中的一行可能是一個表達式,並且這些表達式集成到一個閉環或方法中可以被認爲是一個聲明。
這在概念上或多或少是主觀的。正如尼克拉斯B.正確指出的(你正確地注意到)。
是否有一個問題,您直接處理,讓你看着這個?
你也會聽到人們說「紅寶石中的一切都是對象」,而不是一切都是表達。
我想說,主要的概念區別是東西的價值是使用還是丟棄。 – 2012-03-09 15:36:57
此外,函數和類定義通常然而,在語言,如Lisp和Scheme語句,因爲一切都是表達式,他們沒有在第一時間陳述。 Ruby在這方面接近Lisp的設計。
這些是語句的語法規則,您可以在其中看到(排序)語言實現中的語句。注意expr規則,這意味着stmnt可能是一個expr。表達式不能是一個stmt。
stmt : kALIAS fitem fitem
| kALIAS tGVAR tGVAR
| kALIAS tGVAR tBACK_REF
| kALIAS tGVAR tNTH_REF
| kUNDEF undef_list
| stmt kIF_MOD expr_value
| stmt kUNLESS_MOD expr_value
| stmt kWHILE_MOD expr_value
| stmt kUNTIL_MOD expr_value
| stmt kRESCUE_MOD stmt
| klBEGIN ‘{’ compstmt ‘}’
| klEND ‘{’ compstmt ‘}’
| lhs ‘=’ command_call
| mlhs ‘=’ command_call
| var_lhs tOP_ASGN command_call
| primary_value ‘[’ aref_args ‘]’ tOP_ASGN command_call
| primary_value ‘.’ tIDENTIFIER tOP_ASGN command_call
| primary_value ‘.’ tCONSTANT tOP_ASGN command_call
| primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call
| backref tOP_ASGN command_call
| lhs '=' mrhs_basic
| mlhs '=' mrhs
| expr
正如您注意的那樣,Ruby中沒有語句,所以這個問題沒有任何意義。 – 2012-03-09 15:28:22