Ich habe versucht, Code wie eine Typdeklaration in Ruby zu schreiben

Fazit

Der folgende Code funktioniert.

n = int 42
# =>42 wird ersetzt

f = int 4.2
# => TypeError!

Was ich getan habe

Affen-Patch für das Kernel-Modul wie folgt

module Kernel
    module_function
        
    def int(var = 0)
        if var.is_a?(Integer)
            var
        else
           raise TypeError, "#{var} isn't Integer"
        end
    end 
end

Danach können Sie eine Ruby-Variable wie eine Typdeklaration erstellen, indem Sie einfach "n = int 42" schreiben. Wenn Sie einen Wert eines anderen Typs (oder einer anderen Klasse) übergeben, tritt als Ausnahme "TypeError" auf.

n = int 42
i = int 21

p n
# => 42
p i
# => 21

n = int 4.2
# => `int': 4.2 isn't Integer (TypeError)

Wenn Sie den Einflussbereich einschränken möchten, sollten Sie wie folgt in "Verfeinerungen" schreiben

module Type
    refine Kernel do
       module_function
        
       def int(var = 0)
           if var.is_a?(Integer)
               var
           else
              raise TypeError, "#{var} isn't Integer"
           end
       end
    end
end

Wenn Sie danach "using Type" verwenden, wo Sie es verwenden möchten, ist es in Ordnung.

abschließend

Derzeit können "Integer" und "String" wie eine Typdeklaration wie diese geschrieben werden. Lassen Sie uns darüber nachdenken, wie man Array oder Hash schreibt.

Recommended Posts

Ich habe versucht, Code wie eine Typdeklaration in Ruby zu schreiben
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren
Ich habe versucht, ein übergeordnetes Wertklasseobjekt in Ruby zu erstellen
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich möchte eine Parkettdatei auch in Ruby erstellen
Ich habe versucht, eine Webanwendung voller Fehler mit Kotlin zu implementieren
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe einen C-Parser (wie) mit PEG in Ruby geschrieben
Ich habe versucht, eine einfache Karten-App in Android Studio zu erstellen
Ich habe versucht, die Ajax-Verarbeitung der ähnlichen Funktion in Rails zu implementieren
Ich habe versucht, den Weihnachtsbaum in einem Lebensspiel zu beleuchten
Ich habe versucht, einen Numeron zu erstellen, der mit Ruby nicht gut ist
Ich möchte ein schönes build.gradle schreiben
Ich habe versucht, Processing auf VS Code zu migrieren
Ich möchte einen Unit Test schreiben!
Ich habe versucht, Selen wie JQuery zu verwenden
Ich habe versucht, eine Formel in Javadoc einzubetten
[iOS] Ich habe versucht, mit Swift eine insta-ähnliche Verarbeitungsanwendung zu erstellen
Ich habe versucht, das Problem der Tribonacci-Sequenz in Ruby mit Wiederholung zu lösen.
Ich habe versucht, den CPU-Kern mit Ruby voll auszunutzen
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.
[Ruby] Ich habe versucht, die häufigen Methoden in Paiza zusammenzufassen
[Ruby] Ich habe versucht, die häufigen Methoden mit paiza ② zusammenzufassen
Memorandum zum Bereinigen des Codes Ruby
Ich habe versucht, die Sitzung in Rails zu organisieren
Java Ich habe versucht, einen einfachen Block zu brechen
Code zum Escapezeichen von JSON-Zeichenfolgen in Java
Ich habe versucht, ein Personalmanagement-Tool zu entwickeln
Ich habe versucht, eine Website für das Studium von DUO3.0 zu entwickeln.
[Ruby] Ich möchte einen Methodensprung machen!
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
Ich möchte eine einfache Wiederholung einer Zeichenkette schreiben
Ich habe versucht, eine LINE-Klon-App zu erstellen
Ich habe eine Ruby-Erweiterungsbibliothek in C erstellt
[Ruby-Grundlagen] Ich habe versucht, Module zu lernen (Kapitel 1)
Wie man Code schreibt, der objektorientiertes Ruby denkt
So implementieren Sie eine ähnliche Funktion in Rails
Ich habe versucht, neunundneunzig in Java auszugeben
Ich habe versucht, eine Anwendung in 2 Sprachen zu entwickeln
Ich habe versucht, Alexa-Fähigkeiten mit Java zu erstellen
Ich habe versucht, eine Website zu entwickeln, um Ausgaben zu erfassen.
Ich habe versucht, einen Server mit Netty zu implementieren
Ich habe versucht, den Block mit Java zu brechen (1)
Ich möchte den Wert in Ruby erhalten
Ich habe versucht, CentOS-7 einfach in einen PC zu integrieren, den ich nicht mehr benötige
Ich habe versucht, das Problem der Tribonacci-Sequenz in Ruby zu lösen (Zeitlimit 10 Minuten).
Ich habe ein Beispiel erstellt, wie ein Delegat in Swift UI 2.0 mit MapKit geschrieben wird