C'est sale avec mon propre mémo, mais je vais résumer les points qui sont faciles à faire une erreur
―― Y a-t-il environ 5 questions qui sont exactement les mêmes que la simulation? ――Si vous effectuez un test simulé, il n'y a presque aucun problème à première vue. Même si je développe du rubis depuis 10 ans, je pense qu'il tombera si je ne me prépare pas au test
--split ('d'), split (/; |: /) Séparer et mettre dans le tableau --split Séparer sans argument par un espace --split ("") Fractionner caractère par caractère --- split (",", 2) 2 est le nombre à séparer ["1", "2,3,4,5"] --À propos de la gestion des exceptions
En cas d'omission dans la clause Rescue, l'erreur standard et sa sous-classe seront récupérées. -La clause de sécurité est toujours exécutée --RuntimeError exception si la méthode de montée ne spécifie pas d'argument Se produit
Il y a aussi autre chose. Exécuté lorsque le sauvetage n'est pas exécuté. Écrivez sous resucue.
extend
Opérateur non remplaçable
Notation équivalente --Choses à partir de 0 --Erreur avec Puts 090 etc.
--Opérateur --A && B ... B bouge quand A est vrai --A && B ... Si A est faux, B se déplacera. - A || B ...B bouge quand A est faux - A || B ...B ne fonctionne pas si A est vrai --A B ou A | B ... A est vrai Demo false Démo B fonctionne
time --strftime ("mettre ici")
La priorité de l'opérateur est \ ** supérieure à \ *
--Les constantes de rubis commencent par une majuscule
--Nom de la variable Ruby ――Le premier caractère doit commencer par un alphabet inférieur ou _. --Utilisez des alphabets ou des nombres après le deuxième caractère
--Variable de longueur variable -Déclarer avec * a etc. --Tout nombre d'arguments peut être pris et le tableau est stocké dans un
--À propos du chargement de modules externes
Vous devez charger le module Math lorsque vous utilisez math PI, etc. --Exemple de méthode de lecture - Include Math - Math::PI
Les méthodes singulières sont exécutées avec la priorité sur les méthodes d'extension de classe
..,… À propos de l'opérateur
find_all == select
map == collect
find == detect
updade! == merge --delete_if = rejeter! Supprimez le cœur qui rend le bloc vrai
%w(a b c) -> ["a","b","c"]
"abcde".index("c") -> 2
"abcdec" .index ("c", 2) -> 2 (Recherche par position d'index
"abcdec".index("c",3) -> 5
{"foo" => 1}
{:foo -> 1}
{ foo : 1}
hash[:foo,1] --Point C = est NG, "foo": 1 NG, right est "" requis s'il s'agit d'un caractère --Symbole d'expression régulière
{m} signifie m fois l'expression régulière précédente
{m,} Répétez au moins n fois juste avant
{m.n} Répéter au moins m fois immédiatement avant Répéter au plus n fois --Avec l'option M,. Correspond aux sauts de ligne
\ w est une abréviation pour les constituants du mot
--Lorsque vous voulez changer 65 en "A" - 65.chr
Le contraire est "A" .ord --Pour l'instruction, la portée n'est pas créée, donc les variables internes et externes sont accessibles
Chaque instruction et portée sont créées. L'accès aux variables à l'intérieur de chacune de l'extérieur entraînera une erreur. Les variables externes peuvent être vues de l'intérieur de chaque
'abcdefg'['bc'] -> bc
'abcdefg'.slice('bc') -> bc
'abcdefg'['bd'] -> nil
'abcdefg'.slice! (' bc ') -> bc, le contenu change'adefg'
'abcdefg'[/bc/] -> bc
'abcdefg'.slice(/bc/) -> bc
'abcdefg'.slice! (/ bc /) -> bc, le contenu change'adefg' --sub ... Non destructif, remplacez-en un! --gsub ... Non destructif, remplacez tout!
a='aabbccddeeffgg',
--a.delete ('be') -> aaccddffgg qui renvoie le résultat supprimé. La variable a ne change pas, non destructive
--a.delete ('a-f') La plage peut être spécifiée
--a.delete ('a-c', 'c-g') Lorsqu'il y a plusieurs conditions, le caractère c commun aux deux disparaît.
a='abcd' --a.replace ('xyz') => xyz, a = 'xyz' --Concaténation + << concat *
Conversion de catégorie,! Détruire si attaché --downcase, upcase, swapcase sont inversés --Supprimer chomp ... \ r \ r \ n \ n, non destructif
S'il y en a plusieurs, un type disparaît --S'il disparaît avec le hachage, \ disparaît également
Tous les codes de saut de ligne disparaissent lorsqu'un caractère vide est spécifié. «Braboof»
reverse,reverse!
"abc\ndef\nghi".each{|c| puts c} --Par défaut, chaque saut de ligne s'étend sur des blocs. , Les options peuvent être modifiées
Idem pour les méthodes each_line et line
a=1,2,3 -> [1,2,3]
Reportez-vous à array = [1,2,3], le contenu ne change pas
Même chose que le rejet! --array.delete (3) -> 3, a = [1,2,4,5] Supprimer la valeur
[] | [] Ensemble de somme -[] & [] Dupliquer --Répéter le tableau --chaque élément va dans un bloc --Each_index L'index du tableau va au bloc
[1,2,3].join(",") -> "1,2,3"
array=[1,2,3] --a [10] = 10, Tosult un [4-9] Hanil Gakhail
[] .uniq-> Suppression en double, non destructive,! Détruire si attaché
[] .compact-> nil Supprimer, non destructif,! Détruire si attaché
[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] --Comment faire un hash
{"foo" => 1} Si la valeur est une chaîne, ajoutez "". C'est la seule façon d'en faire une clé de chaîne.
{10 => 1} est également possible, un [10] -> 1 tonale
Attention = est NG, il n'y a pas de "toto": 1 - a["hoo"] -> 1 - a[:foo] -> 1
Méthode de hachage
Changement de hachage
File.delete('readme' --FIle.rename ('avant', 'après') après --IO.read ('readme', 5) Affiche 5 octets depuis le début, lit tous les fichiers s'ils ne sont pas spécifiés et saisis tous sous forme de chaîne dans la variable
IO.foreach('readme'7){ |line| puts line}Lire ligne par ligne --open ('readme'). Readlines Lit tous les fichiers dans un tableau ligne par ligne --io.gets Lire une ligne --io.readline Lire une ligne
L'écriture de la sortie C IO met l'impression --lineno => le nombre de fois où la méthode gets a été appelée --rewind, pointeur de fichier vers le haut, lineno = 0 --pos =? Déplacer le pointeur de fichier --io.seek (10) = io.seek (10, IO :: SEEK_SET) Déplacer le pointeur de 10 octets depuis le début --io.seek (10, IO :: SEEK_CUR) Déplacer depuis la position actuelle --io.seek (10, IO :: SEEK_END) Déplacer depuis la fin du fichier --Time.now, Time.new Renvoie l'objet de temps de l'heure actuelle
[1,2,3,4,5].inject(0){|result,v| result + v ** 2} ->55 Tashizan Shitakekka
each_with_index{|item,i| i=0 couleur
(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"] -Ici document -Il est possible d'indenter la ligne de fin en écrivant avec-'like << - identifier'.
Habituellement, une erreur se produit lors de l'ouverture d'un blanc
--Effacer un \ r \ n avec la méthode Chomp
Effacez le dernier caractère avec la méthode chop --IO # rewind déplace le pointeur de fichier au début
La méthode Split peut spécifier une chaîne de caractères spécifique comme délimiteur dans l'argument. Vous pouvez également spécifier le nombre de tableaux générés par le deuxième argument.
"0-5" est une spécification de plage, mais "8-" n'est pas une spécification de plage et 8 et-sont supprimés.
--eql est vrai si les chaînes sont identiques --equal voit si les objets sont identiques
-inject affecte un élément à un bloc ...|i,j|
foo = [1,2,3]
bar = foo
p foo === bar # => true //Est-ce la même chose qu'égal?
Module Foo
def foo //Défini comme méthode d'instance
puts("foo")
end
end
Class Bar
extend Foo //Définissez la méthode d'instance du module Foo comme une méthode singulière de la classe Bar
end
Bar.foo #=>Peut être utilisé comme foo
-Les constantes commençant par l'opérateur :: comme :: Foo sont des constantes définies de premier niveau
-slice! Désigne après le tranchage
--Comment réagir à la fin du fichier (EOF)
En cas d'obtention, aucun retourne
En cas de Readline, une exception EOFError se produit
La méthode File # mtime enregistre les mises à jour mais la méthode File :: Stat # mtime n'enregistre pas les mises à jour --File :: Stat class est une nouvelle méthode uniquement Méthode de classe
--Lors de la suppression d'une extension arbitraire d'un nom de fichier dont le nom de fichier et l'extension sont séparés par ".", Appelez File.basename avec ". *" Comme deuxième argument.
(1..5).each_cons(3) {|arr| p arr }
# <Résultat d'exécution>
# [1, 2, 3]
# [2, 3, 4]
# [3, 4, 5]
(1..10).each_slice(3) {|arr| p arr }
# <Résultat d'exécution>
# [1, 2, 3]
# [4, 5, 6]
# [7, 8, 9]
# [10]
arr = [1,2].zip([3,4])
p arr
# <Résultat d'exécution>
[[1, 3], [2, 4]]
a1 = [1,2,3]
a2 = [4,2,3]
p a1 - a2
# <Résultat d'exécution>
[1]
p ({a: 100, b: 100}).invert
# <Résultat d'exécution>
# {100 => :b}
1: s = ["one", "two", "three"]
2: s.shift
3: s.shift
4: s.unshift
5: s.push "four"
6: p s
# <Résultat d'exécution>
# 1: ["one", "two", "three"]
# 2: ["two", "three"]
# 3: ["three"]
# 4: ["three"]
# 5: ["three", "four"]
p "Ruby on Rails".delete("Rails")
# <Résultat d'exécution>
# "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 #Méthode d'instance
end
def self.foo #Méthode de classe(Ce moi est la classe elle-même(Blog)Pointer vers)
end
def bar #Méthode d'instance
self.foo #La méthode d'instance foo est appelée(Ce moi est l'instance elle-même(Blog.new)Pointer vers)
foo #La méthode d'instance foo est appelée
self.class.foo #La méthode de classe foo est appelée(Avec une telle description, la classe elle-même peut être pointée même dans la méthode d'instance.)
end
def self.bar #Méthode de classe(Ce moi fait référence à la classe elle-même)
self.foo #La méthode de classe foo est appelée
foo #La méthode de classe foo est appelée
end
end
self = "Mon travail est une vente"
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
le moi est 4
class Interger
def aaaa
return self
end
end
print 4.aaaa
Correspondance d'un personnage
a = ['3p', '913', 'Zx', 'ssr', 'M7', 'W']
a.grep(/[A-Z0-9]/)
["3p", "913", "Zx", "M7", "W"]
Sort de clé1, non destructif
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]]
tri par valeur, non destructif
ordre croissant
h = { "def" => 2, "ghi" => 1, "abc" => 3 }
p h.sort{ | a, b | a[1] <=> b[1] }
p h
[["ghi", 1], ["def", 2], ["abc", 3]]
Ordre décroissant
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,à b-Je ne comprends pas la signification du motif
Que peut-on lire avec inclure? Ajoutez à la classe qui définit la méthode d'instance, la variable d'instance et les informations de constante.
module Foo
Bar = "bar"
end
class Baz
include Foo
end
puts Baz::Bar #=> bar //Puisqu'il s'agit d'une constante, la constante peut être utilisée pour une raison quelconque. La méthode est nouvelle
Que peut-on lire par extension? Ajoutez la méthode d'instance de à la classe en tant que méthode singulière. Traité comme une méthode de classe
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 sort.!Devenez un nano de oo
print(a, b) -> oooo
Dunce \ les espaces ne sont pas cassés
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 est un instantané lorsqu'il est ouvert
file = File.open("hello.rb", "w")
stat = file.stat
mtime1 = stat.mtime //onaji
file.puts("new data")
file.flush
mtime2 = stat.mtime // onaji
Actuel, parent
["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 répertoires de python
filename = File.join(entry, "rocking.rb")
File.open(filename, "w")
end
Dir.rmdir("python")
--File.basename (filename, ". *") // Prend l'extension du nom de fichier
File.open("fancy.txt", "w") do |f|
f.write("R u b y\n")
f.puts(["u","b","y"]) //Saut de ligne Tsutsutsu du tableau 1
end
puts File.read("fancy.txt")
R u b y
u
b
y
File. Les deux parties sont renvoyées sous la forme d'un tableau avec deux éléments. Le programme en question renvoie le tableau [«/ home / john», «bookmarks»]. La méthode join est appelée dans un tableau qui est la valeur renvoyée par File.split. Autrement dit, la jointure Array # est appelée, pas File.join. Array # join joint simplement les chaînes aux éléments du tableau, donc (d) est la bonne réponse.
p File.split("/home/john/bookmarks/").join
“/home/johnbookmarks”
-Dans le bloc|a,0| |b,1| |c,2| .... --Si l'argument de méthode break est spécifié, cette valeur sera la valeur renvoyée par l'appel de méthode bloqué. L'index commence à compter à partir de 0 et le premier index impair est 1. La méthode each_with_index termine l'itération en renvoyant un "b" avec un index de 1. Ensuite, le "b" renvoyé est affecté à la variable locale foo.
foo = ('a'..'z').each_with_index {|i, n| break(i) if n.odd? }
p foo.succ
--0% 3 ... trop 0 ―― 3% 3 ... Pas beaucoup 0 -6% 5 ... trop 1
--Sort de tableau
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] } #J'ajoute un moins au nombre, mais je ne comprends pas le sens
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 ne semble pas augmenter. /// Un déclencheur qui ne devient pas
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" #Exécution du côté droit indépendamment du côté gauche
puts a # We
false | b = "are" #Exécution du côté droit indépendamment du côté gauche
puts b # are
2 == 1 && c = "Ruby" #Le côté gauche est un faux Nanode, Owar
puts "c=nil" if c.nil? #nil
5 > 3 || d = "Engineer" #Le côté gauche est vrai Nano Deowal
puts "d=nil" if d.nil? # nil
p = a + b + c + d # we + are +J'obtiens une erreur avec nul
h = {:name => 'sato', :club => 'tennis'}.fetch(:name, 'error')
print h # sato
h = {:name => 'sato', :club => 'tennis'}.fetch(:nam, 'error')
print h # error
Recommended Posts