7 Stimmen

Was macht dies Ruby?

unless (place =~ /^\./) == 0

Ich weiß, dass das unless wie if not ist, aber wie ist es mit der Bedingung?

12voto

richo Punkte 8149

=~ bedeutet passt zu regex

/^\./ ist ein regulärer Ausdruck:

/.../ sind die Trennzeichen für den Regex

^ passt zum Anfang des Strings oder einer Zeile (\A passt nur zum Anfang des Strings)

\. passt zu einem literalen .

9voto

vonconrad Punkte 24867

Es überprüft, ob der String place mit einem Punkt . beginnt.

Betrachten Sie dies:

p ('.foo' =~ /^\./) == 0 # => true
p ('foo' =~ /^\./) == 0 # => false

In diesem Fall wäre es nicht notwendig, == 0 zu verwenden. place =~ /^\./ würde als Bedingung ausreichen:

p '.foo' =~ /^\./ # => 0 # 0 evaluiert in Ruby-Bedingungen zu true
p 'foo' =~ /^\./ # => nil

ÄNDERUNG: /^\./ ist ein regulärer Ausdruck. Die Start- und Endslashes zeigen an, dass es sich um einen regulären Ausdruck handelt, wobei der wichtige Teil auf ^\. reduziert wird. Das erste Zeichen, ^, kennzeichnet "Anfang der Zeichenfolge/Zeile" und \. ist das wörtliche Zeichen ., da das Punktzeichen normalerweise als spezielles Zeichen in regulären Ausdrücken betrachtet wird.

Weitere Informationen zu regulären Ausdrücken finden Sie unter Wikipedia oder der ausgezeichneten regular-expressions.info Website.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X