Ознакомьтесь с нашей политикой обработки персональных данных
23:09 

Заболекарь
Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Или вот, например, Julia. Там решили пойти своим путём: если у нас есть юникодная строка из четырёх символов, нет никаких гарантий, что они будут пронумерованы именно как «первый, второй, третий, четвёртый». В этом решении есть своя мудрость (символы ведь занимают разное количество байт), но при первой встрече ему сложно не удивиться:

julia> x = "Käse"
"Käse"

julia> length(x)
4

julia> x[1]
'K'

julia> x[2]
'ä'

julia> x[3]
ERROR: UnicodeError: invalid character index
 in next at unicode/utf8.jl:65
 in getindex at strings/basic.jl:37


julia> x[4]
's'

А есть литералы для массивов байтов. Они вдохновлялись пайтоновскими, но сделаны с учётом местного колорита. В третьем пайтоне bytes — отдельный тип, отличающийся и от bytearray, и от array.array, и от numpy.ndarray, исторически родственный строке, но очень этого стесняющийся и от смущения кидающий ошибки, если ему об этом родстве напомнить. В жюлии это просто ещё одна запись для уже существующего типа:

julia> y = b"Käse"
5-element Array{UInt8,1}:
 0x4b
 0xc3
 0xa4
 0x73
 0x65

julia> length(y)
5

julia> y[1]
0x4b

julia> "Brötchen mit $x"
"Brötchen mit Käse"

julia> "Brötchen mit $y"
"Brötchen mit UInt8[0x4b,0xc3,0xa4,0x73,0x65]"

julia> typeof("Käse")
UTF8String

julia> UTF8String <: AbstractString
true

julia> typeof(b"Käse")
Array{UInt8,1}

julia> Array{UInt8,1} <: AbstractString
false

@темы: root@глупыйпингвин:~#

URL
Комментарии
2016-06-15 в 20:17 

Сжиженная благодать
совсем без коня в голове
"Или вот например"
Да это заразно))

2016-06-15 в 20:37 

Заболекарь
Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Да.

URL
   

Эх, разум, да ещё разум

главная