Dieses Thema, Ausnahmebehandlung
Wenn Sie den Grundlagen treu sind, werden Sie mit "regulärem Ausdruck" antworten, aber ich möchte mit "Ausnahmebehandlung" antworten, um *** Ruby *** besser zu verstehen.
Muster, wenn alle drei Buchstaben Zahlen sind
ruby1.rb
s = gets.chomp
puts (/[0-9]{3}/ === s ? s.to_i * 2 : 'error')
s = gets.chomp
puts (s.match(/[0-9]{3}/) ? s.to_i * 2 : 'error')
Muster, wenn nur ein Zeichen in Kleinbuchstaben geschrieben ist
ruby2.rb
s = gets.chomp
puts (/[a-z]/ === s ? 'error' : s.to_i * 2)
s = gets.chomp
puts (s.match(/[a-z]/) ? 'error' : s.to_i * 2)
Muster, wenn nur ein Zeichen eine andere als eine Zahl ist
ruby3.rb
s = gets.chomp
puts (/[^0-9]/ === s ? 'error' : s.to_i * 2)
s = gets.chomp
puts (s.match(/[^0-9]/) ? 'error' : s.to_i * 2)
Ruby to_i (WA)
Muster mit to_i
direkt angewendet
ruby4.rb
s = 'abc'
puts s.to_i # => 0
s = '42A'
puts s.to_i # => 42
Ruby Rational (AC) Muster mit "Rational" angewendet
ruby5.rb
s = gets.chomp
begin
Rational(s)
rescue
puts 'error'
else
puts s.to_i * 2
end
Die Kontrollstruktur für die Ausnahmebehandlung ist wie folgt.
rescue.rb
begin
#Verarbeitung, die eine Ausnahme verursachen kann
[rescue [error_type,..] [=> evar] [then]
#Was tun, wenn eine Ausnahme auftritt?
[else
#Verarbeitung, wenn keine Ausnahme auftritt]
[ensure
#Verarbeitung unabhängig von Ausnahmen ausgeführt]
end
begin`` else`` sure
ist optional.
Obwohl "Rational" normalerweise nicht verwendet wird, handelt es sich um eine Klasse, die rationale Zahlen wie "1/3" verarbeitet.
to_r
interpretiert die erste Zahl, aber Rational
scheint eine Ausnahme gut auszulösen.
ruby6.rb
puts '0x8'.to_r # => 0/1
puts Integer('0x8') # => 8
puts Float('0x8') # => 8.0
puts Complex('0x8') # => ArgumentError
puts Complex('08i') # => 0+8i
Complex
ist eine Klasse, die komplexe Zahlen verarbeitet, und obwohl in 0x8
eine Ausnahme auftritt, kann eine Zeichenfolge mit i
umgangen werden.
Ist es schmerzhaft, to_i
für die Standardausgabe zu verwenden, oder ich denke, es ist besser, reguläre Ausdrücke wie gewohnt zu verwenden.
Referenzierte Site
Recommended Posts