我正在尝试
response = gets.chomp
response == "a" ? puts "yes" : puts "no"
终端抱怨:
syntax error, unexpected ':', expecting keyword_end
response == "a" ? puts "yes" : puts "no"
^
我做错了什么?
答案 0 :(得分:6)
这是您的错误:
Sub selectRange()
Dim selectedRange As Range
Dim errorMessage As String
errorMessage = vbNullString
Dim ran As Range, calB(1 To 30) As Long, i As Integer, j As Integer, k As Integer, l As Integer
Do
'doesn't handle cancel event
Set selectedRange = Application.InputBox("Select the Cal B table.", _
Type:=8, Title:="Please select 14 rows and 3 columns" & errorMessage)
errorMessage = "; previous selection was invalid"
Loop While selectedRange.Columns.Count <> 3 Or selectedRange.Rows.Count <> 14
For j = 1 To 14
For i = 1 To 3
If Abs(selectedRange.Cells(j, i)) > 0 Then
calB(l) = selectedRange.Cells(j, i)
l = l + 1
End If
Next
Next
...rest of your code
Ruby正在寻找第一个response == "a" ? puts "yes" : puts "no"
#=> syntax error, unexpected ':', expecting end-of-input
# response == "a" ? puts "yes" : puts "no"
# ^
&#39;参数。由于它们未括在括号中,因此她假定它们位于puts
之后的逗号分隔列表中。第一个是puts
,但"yes"
后面没有逗号,因此会引发异常。
试试吧:
"yes"
(response == "a" ? (puts "yes") : puts "no"
#=> syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('
# response == "a" ? (puts "yes") : puts "no"
# ^
引发同样的异常。)
我不知道为什么这不起作用。例外情况表明它在第二个response == "a" ? puts("yes") : puts "no"
之后需要一个块(do...end
或{..}
)或一个左括号(用于封闭参数)。 Kernel#puts来电puts
。当$stdout.puts
返回$stdout
个对象时,会调用IO#puts,但该文档没有说明问题。也许读者可以提供解释。
您可以按如下方式编写:
IO
或
response == "a" ? (puts "yes") : (puts "no")
或(最好的,imo)
response == "a" ? puts("yes") : puts("no")