Если вашему сертифицированному файлу сервера не доверяют (например, вы можете создать хранилище ключей самостоятельно с помощью команды keytool в java), вы должны добавить дополнительную опцию rejectUnauthorized
var socket = io.connect('https://localhost', {rejectUnauthorized: false});
Это зависит от контекста:
то, Когда самостоятельно, или присваивающий переменной, []
создает массивы, и {}
, создает хеши. например,
a = [1,2,3] # an array
b = {1 => 2} # a hash
[]
может быть переопределен как пользовательский метод и обычно используется для выборки вещей от хешей (стандартная библиотека настраивает []
как метод на хешах, который совпадает с fetch
)
существует также соглашение, что это используется в качестве метода класса таким же образом, Вы могли бы использовать static Create
метод в C# или Java. например,
a = {1 => 2} # create a hash for example
puts a[1] # same as a.fetch(1), will print 2
Hash[1,2,3,4] # this is a custom class method which creates a new hash
Это - вероятно, самое хитрое - {}
, также синтаксис для блоков, но только, когда передано методу ВНЕ аргументов parens.
, Когда Вы вызываете методы без parens, взгляды Ruby на то, куда Вы помещаете запятые для выяснения, где аргументы заканчиваются (тому, где parens был бы, ввели Вас их)
1.upto(2) { puts 'hello' } # it's a block
1.upto 2 { puts 'hello' } # syntax error, ruby can't figure out where the function args end
1.upto 2, { puts 'hello' } # the comma means "argument", so ruby sees it as a hash - this won't work because puts 'hello' isn't a valid hash
Вообще говоря Вы корректны. А также хеши, общий стиль - то, что фигурные скобки {}
часто используются для блоков, которые могут соответствовать всем на одну строку, вместо того, чтобы использовать do
/ end
через несколько строк.
Квадратные скобки []
используются в качестве методов класса в большом количестве классов Ruby, включая Строку, BigNum, Dir и смутно достаточно, Хеш. Так:
Hash["key" => "value"]
так же допустимо как:
{ "key" => "value" }
Квадратные скобки [] используются для инициализации массивов. Документация для случая инициализатора [] находится в
ri Array::[]
, фигурные скобки {} используются для инициализации хешей. Документация для случая инициализатора {} находится в
ri Hash::[]
, квадратные скобки являются также наиболее часто используемыми как метод во многих базовых рубиновых классах, как Массив, Хеш, Строка и другие.
можно получить доступ к списку всех классов, которые имеют метод" []" определенный с
ri []
, большинство методов также имеет" [] =" метод, который позволяет присваивать вещи, например:
s = "hello world"
s[2] # => 108 is ascii for e
s[2]=109 # 109 is ascii for m
s # => "hemlo world"
Фигурные скобки могут также использоваться вместо, "действительно... заканчиваются" на блоках, как "{...}".
Другой случай, где Вы видите квадратные скобки или используемые фигурные скобки - находится в специальных инициализаторах, где любой символ может использоваться, как:
%w{ hello world } # => ["hello","world"]
%w[ hello world ] # => ["hello","world"]
%r{ hello world } # => / hello world /
%r[ hello world ] # => / hello world /
%q{ hello world } # => "hello world"
%q[ hello world ] # => "hello world"
%q| hello world | # => "hello world"
несколько примеров:
[1, 2, 3].class
# => Array
[1, 2, 3][1]
# => 2
{ 1 => 2, 3 => 4 }.class
# => Hash
{ 1 => 2, 3 => 4 }[3]
# => 4
{ 1 + 2 }.class
# SyntaxError: compile error, odd number list for Hash
lambda { 1 + 2 }.class
# => Proc
lambda { 1 + 2 }.call
# => 3
Другой, не настолько очевидный, использование []
как синоним для Proc#call и Method#call. Это могло бы немного путать в первый раз, когда Вы встречаетесь с ним. Я предполагаю, что рациональное позади него - то, что это заставляет его больше походить на нормальный вызов функции.
Например.
proc = Proc.new { |what| puts "Hello, #{what}!" }
meth = method(:print)
proc["World"]
meth["Hello",","," ", "World!", "\n"]
Обратите внимание, что вы можете определить метод []
для своих собственных классов:
class A
def [](position)
# do something
end
def @rank.[]= key, val
# define the instance[a] = b method
end
end