2016-04-15 16 views
0

Wie entkomme ich richtig% in Aufruf von printf in Ruby? Wie entkomme ich richtig% in Aufruf von printf in Ruby?

Wenn ich versuche, %% zu verwenden (wie in C),

value = 47 
printf "To have a 60%% test average, your final exam must be at least %0.2f.\n" % [value] 

ich diesen Fehler:

$ ruby /tmp/test.rb 
/tmp/test.rb:4:in `printf': malformed format string - %t (ArgumentError) 
    from /tmp/test.rb:4:in `<main>' 

Es scheint, dass die % in den String interpoliert wird, bevor die Zeichenfolge auf Formatargumente geprüft (dh die "... %% test ..." wird anscheinend als "... %test ..." interpretiert); Ich kenne jedoch nicht die richtige Art, die Formatzeichenfolge einzurichten.

Antwort

2

Sie sollten als Argument übergeben Wert

printf "To have a 60%% test average, your final exam must be at least %0.2f.\n",value 
+0

Was ist der Unterschied zwischen 'printf "..." % [p1, p2]' und 'printf "...", p1' printf. (Mir wurde beigebracht, die Arraysyntax zu verwenden.) – Zack

+0

In Ruby ist der Operator% für Zeichenfolgen ein Formatoperator. Sie können Zeichenketten ohne printf formatieren, indem Sie "% 06d"% 100 "ausführen - ich bin mir nicht sicher, warum ein Array als Parameter für printf übergeben werden soll. Es gibt einige fortgeschrittene Themen wie das Übergeben eines Arrays als eine Liste von Funktionsargumenten, aber um es einfach zu halten, übergeben Sie einen einzelnen Wert an die printf-Anweisung für jedes Format, das Sie in der Zeichenfolge haben und das für jeden leicht verständlich ist. – dwilkins

+1

@Zack - sieht so aus, als wäre Ihre Array-Syntax für die Übergabe mehrerer Argumente an den '%' -Operator - Sie brauchen nicht einmal 'printf', wenn Sie'% ' – dwilkins