Es ist schmutzig mit meinem eigenen Memo, aber ich werde die Punkte zusammenfassen, die leicht einen Fehler machen können
―― Gibt es ungefähr 5 Fragen, die genau dem Mock entsprechen? ――Wenn Sie einen Mock-Test durchführen, gibt es auf den ersten Blick fast keine Probleme. Selbst wenn ich seit 10 Jahren Rubin entwickle, denke ich, dass es fallen wird, wenn ich mich nicht auf den Test vorbereite
--split ('d'), split (/; |: /) Trenne und füge das Array ein --split Trenne ohne Argument mit einem Leerzeichen --split ("") Teil für Zeichen teilen --- split (",", 2) 2 ist die zu trennende Zahl ["1", "2,3,4,5"]
Über die Ausnahmebehandlung
Nehmen Sie den Standardfehler und seine Unterklassen auf, wenn er in der Rescue-Klausel weggelassen wurde -Ensure-Klausel wird immer ausgeführt --RuntimeError-Ausnahme, wenn die Raise-Methode kein Argument angibt Tritt ein
Es gibt auch noch etwas anderes. Wird ausgeführt, wenn die Rettung nicht ausgeführt wird. Schreiben Sie unter Rettung.
extend
Nicht überschreibbarer Operator
Äquivalente Notation --Dinge ab 0
Fehler mit Puts 090 usw.
--Operator --A && B ... B bewegt sich, wenn A wahr ist --A && B ... Wenn A falsch ist, bewegt sich B. - A || B ...B bewegt sich, wenn A falsch ist - A || B ...B funktioniert nicht, wenn A wahr ist --A B oder A | B ... A ist wahr Demo falsch Demo B funktioniert
time --strftime ("hier setzen")
Die Bedienerpriorität ist \ ** höher als \ *
Rubinkonstanten beginnen mit einem Großbuchstaben
Kann geändert werden, aber eine Warnung wird ausgegeben -Keine Warnung beim Hinzufügen mit <<
Name der Ruby-Variablen ――Das erste Zeichen muss mit einem niedrigeren Alphabet oder _ beginnen. --Verwenden Sie nach dem zweiten Zeichen Alphabete oder Zahlen
--Variable Längenvariable -Deklarieren Sie mit * a usw.
Es kann eine beliebige Anzahl von Argumenten verwendet werden und das Array wird in a gespeichert
Die Initialisierungsmethode wird viele Male gelesen und neu geschrieben
Der Beschreibungsort von Super kann eine beliebige Position sein. Wenn Sie eine Methode mit demselben Namen überschreiben, wird der Super aufgerufen
Über das Laden externer Module
Sie müssen das Math-Modul laden, wenn Sie Math PI usw. verwenden.
Beispiel einer Lesemethode - Include Math - Math::PI
Singuläre Methoden werden vorrangig vor Klassenerweiterungsmethoden ausgeführt
..,… Über den Betreiber
find_all == select
map == collect
find == detect
updade! == merge --delete_if = ablehnen! Entferne das Herz, das den Block wahr macht
%w(a b c) -> ["a","b","c"]
"abcde".index("c") -> 2
"abcdec" .index ("c", 2) -> 2 (Suche nach Indexposition
"abcdec".index("c",3) -> 5
{"foo" => 1}
{:foo -> 1}
{ foo : 1}
hash[:foo,1] --Point C = ist NG, "foo": 1 NG, rechts ist "" erforderlich, wenn es sich um ein Zeichen handelt
Symbol für reguläre Ausdrücke
Unempfindlich mit i Option
Repräsentiert ein beliebiges Zeichen
{m} bedeutet m-mal des vorherigen regulären Ausdrucks
{m,} Mindestens n-mal unmittelbar vorher wiederholen
{m.n} Mindestens m-mal unmittelbar vor der Wiederholung höchstens n-mal wiederholen
Mit der Option M. Stimmt mit Zeilenumbrüchen überein
Nur einmal abgleichen
Scan wird wiederholt
\ w ist eine Abkürzung für Wortbestandteile
--Wenn Sie 65 in "A" ändern möchten - 65.chr
Das Gegenteil ist "A" .ord --Für die Anweisung wird kein Gültigkeitsbereich erstellt, sodass auf interne und externe Variablen zugegriffen werden kann
Jede Anweisung und jeder Bereich werden erstellt. Der Zugriff auf die Variablen innerhalb von außen führt zu einem Fehler. Externe Variablen können von innen gesehen werden
'abcdefg'['bc'] -> bc
'abcdefg'.slice('bc') -> bc
'abcdefg'['bd'] -> nil
'abcdefg'.slice! (' bc ') -> bc, der Inhalt ändert sich'adefg'
'abcdefg'[/bc/] -> bc
'abcdefg'.slice(/bc/) -> bc
'abcdefg'.slice! (/ bc /) -> bc, Inhalt ändert sich'adefg' --sub ... Zerstörungsfrei, ersetzen Sie eine! --gsub ... Zerstörungsfrei, alle ersetzen!
a='aabbccddeeffgg',
--a.delete ('be') -> aaccddffgg, das das gelöschte Ergebnis zurückgibt. Variable a ändert sich nicht, zerstörungsfrei
--a.delete ('a-f') Bereich kann angegeben werden
--a.delete ('a-c', 'c-g') Wenn mehrere Bedingungen vorliegen, verschwindet das beiden gemeinsame Zeichen c.
a='abcd' --a.replace ('xyz') => xyz, a = 'xyz'
Verkettung + << concat *
Kategorieumwandlung! Zerstören, wenn angebracht --downcase, upcase, swapcase werden invertiert
Chomp löschen ... \ r \ r \ n \ n, zerstörungsfrei
Wenn es mehrere gibt, verschwindet ein Typ
Wenn es mit chop verschwindet, verschwindet auch
Alle Zeilenvorschubcodes verschwinden, wenn Sie ein Leerzeichen angeben. "Braboof"
reverse,reverse!
"abc\ndef\nghi".each{|c| puts c}
Standardmäßig umfasst jeder Zeilenumbruch Blöcke. , Optionen können geändert werden
Gleich für jede_Linie und Linienmethode
a=1,2,3 -> [1,2,3]
Beziehen Sie sich auf Array = [1,2,3], der Inhalt ändert sich nicht
Gleich wie ablehnen! --array.delete (3) -> 3, a = [1,2,4,5] Löschen Sie den Wert
[] | [] Summensatz
[] & [] Duplizieren
Array wiederholen --each Jedes Element geht zu einem Block --Each_index Der Index des Arrays geht an den Block
[1,2,3].join(",") -> "1,2,3"
array=[1,2,3] --a [10] = 10, Tosult a [4-9] Hanil Gakhail
[] .uniq-> Doppelte Löschung, zerstörungsfrei ,! Zerstören, wenn angebracht
[] .compact-> nil Löschen, zerstörungsfrei ,! Zerstören, wenn angebracht
[1,2,3,4,5].map{|n| n*2} -> [2,4,6,8,10]
[1,2]*4 -> [1,2,1,2,1,2,1,2]
Wie man einen Hash macht
{"foo" => 1} Wenn der Wert eine Zeichenfolge ist, fügen Sie "" hinzu. Dies ist die einzige Möglichkeit, ihn zu einem Zeichenfolgenschlüssel zu machen.
{10 => 1} ist ebenfalls möglich, ein [10] -> 1 Ton
Vorsicht = ist NG, es gibt kein "foo": 1 - a["hoo"] -> 1 - a[:foo] -> 1
Hash-Methode
Änderung ändern
Aufsteigendes Sortierarray mit dem Schlüssel hash.sort zurückgeben
File.delete('readme' --FIle.rename ('vor', 'nach') nach --IO.read ('readme', 5) 5 Bytes von Anfang an ausgeben, alle Dateien lesen, falls nicht angegeben, und alle als Zeichenfolge in die Variable eingeben
IO.foreach('readme'7){ |line| puts line}Zeile für Zeile lesen --open ('readme'). Readlines Liest alle Dateien zeilenweise in ein Array --io.gets Lies eine Zeile --io.readline Lies eine Zeile --IO Ausgabe C Schreiben setzt Drucken --lineno => wie oft die Methode gets aufgerufen wurde --rewind, Dateizeiger nach oben, lineno = 0 --pos =? Dateizeiger verschieben --io.seek (10) = io.seek (10, IO :: SEEK_SET) Bewegen Sie den Zeiger 10 Byte von Anfang an --io.seek (10, IO :: SEEK_CUR) Von der aktuellen Position verschieben --io.seek (10, IO :: SEEK_END) Vom Ende der Datei verschieben --Time.now, Time.new Gibt das Zeitobjekt der aktuellen Zeit zurück
[1,2,3,4,5].inject(0){|result,v| result + v ** 2} ->55 Tashizan Shitakekka
each_with_index{|item,i| i=0 Farbe
(1..10).each_cons(3) ->
(1..10).each_slice(3) ->
[1,2,3,4,5].include?(3)-> true
find == detect
[1,2,3,4,5].seletc{|i| i % 2 == 0} ->[2,4]
["aaa","b","cc"].sort{|a,b| a.length <==> b.length} -> [ "b","cc","aaa"]
Hier Dokument -Es ist möglich, die Endzeile durch Schreiben mit-'like << - identifier 'einzurücken.
Normalerweise tritt beim Öffnen eines Leerzeichens ein Fehler auf
Löschen Sie eins \ r \ n mit der Chomp-Methode
Löschen Sie das letzte Zeichen mit der Chop-Methode --IO # rewind bewegt den Dateizeiger an den Anfang
Die Split-Methode kann eine bestimmte Zeichenfolge als Trennzeichen im Argument angeben. Sie können auch die Anzahl der vom zweiten Argument generierten Arrays angeben.
"0-5" ist eine Bereichsspezifikation, aber "8-" ist keine Bereichsspezifikation und 8 und-werden gelöscht.
--eql ist wahr, wenn die Zeichenfolgen gleich sind --equal sieht, ob die Objekte gleich sind
-Inject weist einem Block ein Element zu ...|i,j|
foo = [1,2,3]
bar = foo
p foo === bar # => true //Ist es dasselbe wie gleich?
Module Foo
def foo //Als Instanzmethode definiert
puts("foo")
end
end
Class Bar
extend Foo //Definieren Sie die Instanzmethode des Foo-Moduls als singuläre Methode der Bar-Klasse
end
Bar.foo #=>Kann als foo verwendet werden
-Konstanten, die mit dem Operator :: beginnen, wie :: Foo, sind definierte Konstanten der obersten Ebene
-slice! Bezieht sich auf nach dem Schneiden
Wie man auf das Ende der Datei reagiert (EOF)
Im Falle von get kehrt nil zurück
Bei Readline tritt eine EOFError-Ausnahme auf
Die Methode # File # mtime speichert Aktualisierungen, die Methode File :: Stat # mtime speichert jedoch keine Aktualisierungen --File :: Stat-Klasse ist nur eine neue Methode
Wenn Sie eine beliebige Erweiterung aus einem Dateinamen entfernen, dessen Dateiname und Erweiterung durch "." Getrennt sind, rufen Sie File.basename mit ". *" Als zweitem Argument auf.
"% 2d" von "% 2d% s" ist eine Spezifikation zum Einfügen eines Leerzeichens, wenn die Zahl, die Sie ausgeben möchten, weniger als 2 Stellen umfasst
(1..5).each_cons(3) {|arr| p arr }
# <Ausführungsergebnis>
# [1, 2, 3]
# [2, 3, 4]
# [3, 4, 5]
(1..10).each_slice(3) {|arr| p arr }
# <Ausführungsergebnis>
# [1, 2, 3]
# [4, 5, 6]
# [7, 8, 9]
# [10]
arr = [1,2].zip([3,4])
p arr
# <Ausführungsergebnis>
[[1, 3], [2, 4]]
a1 = [1,2,3]
a2 = [4,2,3]
p a1 - a2
# <Ausführungsergebnis>
[1]
p ({a: 100, b: 100}).invert
# <Ausführungsergebnis>
# {100 => :b}
1: s = ["one", "two", "three"]
2: s.shift
3: s.shift
4: s.unshift
5: s.push "four"
6: p s
# <Ausführungsergebnis>
# 1: ["one", "two", "three"]
# 2: ["two", "three"]
# 3: ["three"]
# 4: ["three"]
# 5: ["three", "four"]
p "Ruby on Rails".delete("Rails")
# <Ausführungsergebnis>
# "uby on "
a, b = 0 # a => 0, b => nil
c, a = 1 # c => 1, a => nil
a, d = 1, 2 # a => 1, d => 2
b, c = 3 # b => 3, c => nil
class Blog
def foo #Instanzmethode
end
def self.foo #Klassenmethode(Dieses Selbst ist die Klasse selbst(Blog)Zeigen auf)
end
def bar #Instanzmethode
self.foo #Die Instanzmethode foo wird aufgerufen(Dieses Selbst ist die Instanz selbst(Blog.new)Zeigen auf)
foo #Die Instanzmethode foo wird aufgerufen
self.class.foo #Die Klassenmethode foo wird aufgerufen(Mit einer solchen Beschreibung kann sogar in der Instanzmethode auf die Klasse selbst verwiesen werden.)
end
def self.bar #Klassenmethode(Dieses Selbst bezieht sich auf die Klasse selbst)
self.foo #Die Klassenmethode foo wird aufgerufen
foo #Die Klassenmethode foo wird aufgerufen
end
end
self = "Mein Job ist ein Verkauf"
class String
def change_job
self.replace("I will become an engineer!")
end
end
s = "My job is a sales"
s.change_job
p s
Selbst ist 4
class Interger
def aaaa
return self
end
end
print 4.aaaa
Ein Zeichen stimmt überein
a = ['3p', '913', 'Zx', 'ssr', 'M7', 'W']
a.grep(/[A-Z0-9]/)
["3p", "913", "Zx", "M7", "W"]
Schlüsselsortierung sort1, zerstörungsfrei
h = { "def" => 2, "ghi" => 1, "abc" => 3 }
p h.sort
[["abc", 3], ["def", 2], ["ghi", 1]]
h = { "def" => 2, "ghi" => 1, "abc" => 3 }
p h.sort.reverse
[["ghi", 1], ["def", 2], ["abc", 3]]
Wertesortierung, zerstörungsfrei
aufsteigende Reihenfolge
h = { "def" => 2, "ghi" => 1, "abc" => 3 }
p h.sort{ | a, b | a[1] <=> b[1] }
p h
[["ghi", 1], ["def", 2], ["abc", 3]]
absteigende Reihenfolge
h = { "def" => 2, "ghi" => 1, "abc" => 3, "ddd" => 5 }
p h.sort{ | a, b | b[1] <=> a[1] }
[["ddd", 5], ["abc", 3], ["def", 2], ["ghi", 1]]
a,zu b-Ich verstehe die Bedeutung des Musters nicht
Was kann mit include gelesen werden? Fügen Sie der Klasse hinzu, die die Instanzmethode, die Instanzvariable und die konstanten Informationen definiert.
module Foo
Bar = "bar"
end
class Baz
include Foo
end
puts Baz::Bar #=> bar //Da es sich um eine Konstante handelt, kann die Konstante aus irgendeinem Grund verwendet werden. Die Methode ist neu
Was kann durch Erweitern gelesen werden? Fügen Sie der Klasse die Instanzmethode als singuläre Methode hinzu. Als Klassenmethode behandelt
module Foo
def foo
puts("foo")
end
end
class Bar
extend Foo
end
Bar.foo #=> foo
a = "foo"
b = a
b.slice!(0, 1) ->f kommt heraus.!Werde ein Nano de Oo
print(a, b) -> oooo
Dunce \ Leerzeichen sind nicht kaputt
File.open("hats.txt", "w") do |f|
f.puts(%w[Bowler Deerstalker Dunce\ cap Fedora Fez])
end
hats.txt
Bowler
Deerstalker
Dunce\ cap
Fedora
Fez
File.stat ist beim Öffnen ein Schnappschuss
file = File.open("hello.rb", "w")
stat = file.stat
mtime1 = stat.mtime //onaji
file.puts("new data")
file.flush
mtime2 = stat.mtime // onaji
Aktuell, Elternteil
["tmp", "tmp/lang", "tmp/lang/ruby", "tmp/lang/python"].each do |dir|
Dir.mkdir(dir)
end
Dir.chdir("tmp/lang")
Dir.new(".").each do |entry| // . , .. , ruby,4 Verzeichnisse von Python
filename = File.join(entry, "rocking.rb")
File.open(filename, "w")
end
Dir.rmdir("python")
--File.basename (Dateiname, ". *") // Die Erweiterung aus dem Dateinamen übernehmen
File.open("fancy.txt", "w") do |f|
f.write("R u b y\n")
f.puts(["u","b","y"]) //Array 1 Tsutsutsu Zeilenumbruch
end
puts File.read("fancy.txt")
R u b y
u
b
y
File.split teilt die Argumente des Zeichenfolgenobjekts in einen Verzeichnis- und einen Dateiteil auf und entfernt den abschließenden Schrägstrich von beiden. Die beiden Teile werden als ein Array mit zwei Elementen zurückgegeben. Das betreffende Programm gibt das Array ["/ home / john", "Lesezeichen"] zurück. Die Join-Methode wird in einem Array aufgerufen, das der von File.split zurückgegebene Wert ist. Das heißt, Array # join wird aufgerufen, nicht File.join. Array # join verbindet einfach die Zeichenfolgen mit den Elementen des Arrays, sodass (d) die richtige Antwort ist.
p File.split("/home/john/bookmarks/").join
“/home/johnbookmarks”
-Im Block|a,0| |b,1| |c,2| ....
foo = ('a'..'z').each_with_index {|i, n| break(i) if n.odd? }
p foo.succ
--0% 3 ... zu viel 0 ―― 3% 3 ... nicht viel 0 -6% 5 ... zu viel 1
score = [["kobayashi", 86],["murata", 54],["azuma", 72]]
puts "a-shoujun"
p score.sort { |a, b| a[0] <=> b[0] }
p score.sort { |a, b| -a[0] <=> -b[0] } #Ich füge der Zahl ein Minus hinzu, aber ich verstehe die Bedeutung nicht
puts "a-koujun"
p score.sort { |a, b| a[0] <=> b[0] }.reverse
p score.sort { |a, b| b[0] <=> a[0] }
p score.sort { |a, b| -b[0] <=> -a[0] } # musi
puts "b-shoujun"
p score.sort { |a, b| a[1] <=> b[1] }
p score.sort { |a, b| -b[1] <=> -a[1] } # musi
puts "b-koujun"
p score.sort { |a, b| a[1] <=> b[1] }.reverse
p score.sort { |a, b| b[1] <=> a[1] }
p score.sort { |a, b| -a[1] <=> -b[1] } #Oboete Okou
a-shoujun
[["azuma", 72], ["kobayashi", 86], ["murata", 54]]
[["azuma", 72], ["kobayashi", 86], ["murata", 54]]
a-koujun
[["murata", 54], ["kobayashi", 86], ["azuma", 72]]
[["murata", 54], ["kobayashi", 86], ["azuma", 72]]
[["murata", 54], ["kobayashi", 86], ["azuma", 72]]
b-shoujun
[["murata", 54], ["azuma", 72], ["kobayashi", 86]]
[["murata", 54], ["azuma", 72], ["kobayashi", 86]]
b-koujun
[["kobayashi", 86], ["azuma", 72], ["murata", 54]]
[["kobayashi", 86], ["azuma", 72], ["murata", 54]]
[["kobayashi", 86], ["azuma", 72], ["murata", 54]]
Slashha scheint nicht zuzunehmen. /// Ein Trigger, der nicht wird
https="https://"
domain="example.jp"
dir="index.html"
puts File.join(https, domain, dir)
https://example.jp/index.html
# https:/ ->Sonomama
# https: -> https:/
true & a = "We" #Ausführung auf der rechten Seite unabhängig von der linken Seite
puts a # We
false | b = "are" #Ausführung auf der rechten Seite unabhängig von der linken Seite
puts b # are
2 == 1 && c = "Ruby" #Linke Seite ist falsch Nanode, Owar
puts "c=nil" if c.nil? #nil
5 > 3 || d = "Engineer" #Die linke Seite ist wahr Nano Deowal
puts "d=nil" if d.nil? # nil
p = a + b + c + d # we + are +Ich bekomme einen Fehler mit Null
h = {:name => 'sato', :club => 'tennis'}.fetch(:name, 'error')
print h # sato
h = {:name => 'sato', :club => 'tennis'}.fetch(:nam, 'error')
print h # error
Recommended Posts