Die Programmiersprache Ruby (German Edition)
diese Variable auf die mit
-i
angegebene Backup-Dateinamenerweiterung gesetzt.
$-l
true
, wenn die Option
-l
angegeben wurde. Nur lesbar.
$-p
true
, wenn die Interpreter-Option
-p
angegeben wurde; andernfalls
false
. Nur lesbar.
$-W
In Ruby 1.9 gibt diese globale Variable das aktuelle Verbose-Level (Ausführlichkeit von Meldungen) an. Sie ist
0
, wenn die Option
-W0
verwendet wurde, und
2
, wenn eine der Optionen
-w
,
-v
oder
--verbose
zum Einsatz kam. Andernfalls ist diese Variable
1
. Nur lesbar.
10.2.4 Vordefinierte globale Funktionen
Das von
Object
importierte Modul
Kernel
definiert eine Reihe privater Instanzmethoden, die als globale Funktionen dienen. Da sie privat sind, müssen sie als Funktionen aufgerufen werden, das heißt ohne explizites Empfängerobjekt. Und da sie von
Object
importiert werden, können sie überall aufgerufen werden – egal, was der Wert von
self
ist, ist er ein Objekt, und diese Methoden können implizit dafür aufgerufen werden. Die von
Kernel
definierten Funktionen lassen sich in verschiedene Kategorien unterteilen, von denen die meisten an anderen Stellen dieses Kapitels oder des Buches behandelt werden.
10.2.4.1 Schlüsselwortfunktionen
Die folgenden
Kernel
-Funktionen verhalten sich wie Sprachschlüsselwörter und werden an anderen Stellen in diesem Buch behandelt:
block_given? iterator? loop require
callcc lambda proc throw
catch load raise
10.2.4.2 Texteingabe-, -ausgabe-, und -manipulationsfunktionen
Kernel
defininiert die folgenden Funktionen, von denen die meisten globale Varianten von
IO
-Methoden sind. Sie werden detaillierter in „10.3 »Practical Extraction and Report«-Arbeitserleichterungen“ behandelt:
format print puts sprintf
gets printf readline
p putc readlines
In Ruby 1.8 (aber nicht 1.9) definiert
Kernel
auch die folgenden globalen Varianten von
String
-Methoden, die implizit mit
$_
arbeiten:
chomp chop gsub scan sub
chomp! chop! gsub! split sub!
10.2.4.3 Betriebssystemmethoden
Die folgenden
Kernel
-Funktionen bieten einem Ruby-Programm eine Schnittstelle zum Betriebssystem. Sie sind plattformabhängig und werden in „10.4 Das Betriebssystem aufrufen“ behandelt. Beachten Sie, dass
`
die speziell benannte Backtick-Methode ist, die die Textausgabe eines beliebigen Betriebssystem-Shell-Kommandos zurückgibt:
` fork select system trap
exec open syscall test
10.2.4.4 Warnungen, Fehler und Programmabbrüche
Die folgenden
Kernel
-Funktionen geben Warnungen aus, lösen Ausnahmen aus, sorgen für ein Programmende oder registrieren Codeblöcke, die am Programmende ausgeführt werden. Sie werden zusammen mit den betriebssystemspezifischen Methoden in „10.4 Das Betriebssystem aufrufen“ dokumentiert:
abort at_exit exit exit! fail warn
10.2.4.5 Reflexionsfunktionen
Die folgenden
Kernel
-Funktionen sind Teil von Rubys Reflexions-API und wurden in Kapitel 8 beschrieben:
binding set_trace_func
caller singleton_method_added
eval singleton_method_removed
global_variables singleton_method_undefined
local_variables trace_var
method_missing untrace_var
remove_instance_variable
10.2.4.6 Konvertierungsfunktionen
Die folgenden
Kernel
-Funktionen versuchen, ihre Argumente in einen neuen Typ zu konvertieren. Sie wurden in „3.8.7.3 Konvertierungsfunktionen“ beschrieben:
Array Float Integer String
10.2.4.7 Sonstige Kernel-Funktionen
Die folgenden weiteren
Kernel
-Funktionen passen nicht in die obigen Kategorien:
autoload rand srand
autoload? sleep
rand
und
srand
sind für die Erzeugung von Zufallszahlen zuständig und werden in „9.3.7 Zufallszahlen“ dokumentiert.
autoload
und
autoload?
werden in „7.6.3 Module automatisch laden“ behandelt. Und
sleep
wird in „9.9 Threads und Parallelität“ sowie in „10.4.4 Programme beenden“ behandelt.
10.2.5 Benutzerdefinierte globale Funktionen
Wenn Sie mit
def
eine Methode innerhalb einer
class
- oder
module
-Deklaration definieren und kein Empfängerobjekt für die Methode angeben, wird die Methode als öffentliche Instanzmethode von
self
erzeugt, wobei
self
die Klasse oder das Modul ist, die oder das Sie gerade definieren. Bei der Verwendung von
def
auf der höchsten Ebene, außerhalb aller
class
- oder
module
-Bereiche, gibt es zwei wichtige Unterschiede. Erstens sind Top-Level-Methoden Instanzmethoden von
Object
(obwohl
self
nicht
Object
ist). Zweitens sind Top-Level-Methoden immer privat.
----
Top-Level self: das Objekt main
Da Top-Level-Methoden Instanzmethoden von
Object
werden, erwarten Sie
Weitere Kostenlose Bücher