Описание тега crystal-lang

Crystal - это язык программирования с синтаксисом, вдохновленным Ruby, но со статической проверкой типов и компиляцией в собственный и эффективный код.
1 ответ

Как я могу передавать несколько файлов одновременно, используя HTTP::Server?

Я работаю над HTTP-сервисом, который обслуживает большие файлы. Я заметил, что параллельные загрузки невозможны. Процесс обслуживает только один файл за раз, и все остальные загрузки ожидают до завершения предыдущих загрузок. Как я могу передавать н…
28 июн '17 в 12:43
1 ответ

Определить валидации объекта Class

Есть ли собственный способ определения проверок для объекта Crystal? Давайте рассмотрим этот класс: class Person def initialize(@age : Int32) end end Как я могу добавить простую проверку if age < 18? Пример: Person.new(10) >> Error: attibut…
22 дек '16 в 20:21
1 ответ

Создать модель Granite из параметров JSON

То, что я хотел бы, чтобы произошло: кто-то может сделать запрос на почту users/new с параметрами, и я хотел бы создать User объект из параметров JSON. В файле readme он дает такой пример: foo = Foo.from_json(%({"name": "Granite1"})) Но когда я пыта…
11 сен '18 в 12:40
1 ответ

Как проверить, содержится ли строка в подстроке в Crystal Lang?

Я не вижу String#contains метод или String#search метод в Crystal API.
19 мар '18 в 04:52
1 ответ

Кристалл: хороший способ выбора методов

Мне нужно передать некоторые опции в метод, некоторые из этих опций являются необязательными (что-то вроде деструктурирования объекта в JS). Мой текущий код: def initialize( arg1 : String, options = {} of Symbol => String ) opt = MyClass.get_opti…
15 янв '17 в 12:35
1 ответ

Как я могу остановить волокно?

Допустим, у нас есть волокно с длительным циклом и с данным каналом таймаута, когда мы получаем сообщение, мы хотим остановить волокно и перезапустить его (или сделать что-то еще). Вот псевдокод: # we have a timeout channel fiber = spawn do # long r…
17 дек '18 в 21:05
1 ответ

Хрустальный язык карри

Я пытаюсь создать процедуру добавления карри в Crystal. Как заставить этот пример работать? semi_curry = ->(f: Proc(Int32, Int32)) { ->(a: Int32) { ->(b: Int32) { f.call(a, b) } } } add = ->(a: Int32, b: Int32) {a + b} p semi_curry(add).…
18 мар '18 в 19:23
2 ответа

Почему Crystal не может определить этот тип в инициализаторе?

У меня есть следующий код: class Triangle def initialize(@sides : Array(Int32)) @set = Set.new(@sides) end end Однако я получаю ошибку компилятора, которая дает мне: Can't use Set(T) as the type of instance variable @set of Triangle, use a more spec…
28 янв '18 в 14:39
1 ответ

Реализация Ленивого Перечислителя в Кристалле

В Ruby для создания собственного ленивого перечислителя можно использовать Enumerator как это: enum = Enumerator.new do |e| e << value = ".a" loop { e << value = value.next } end enum.next # => ".a" enum.next # => ".b" enum.next # …
10 янв '19 в 16:07
1 ответ

Кристаллический эквивалент алгебраическим типам данных

Какой идиоматический способ написать эквивалент алгебраического типа данных в Crystal? Например, в Хаскеле я мог бы data Stage = StageInitial String | StageFinished String Итак, я хочу иметь два этапа, каждый из которых имеет строку полезной нагрузк…
27 фев '18 в 00:12
1 ответ

Получение синтаксической ошибки: ожидание токена "EOF", а не "end" и не может понять, почему

Итак, я пытаюсь реализовать способ добавления миграций базы данных без ORM/ODM для моей базы данных SQLite3, и ошибка, которую я получаю (syntax error: expecting token 'EOF', not 'end') для этого кода: src/project/database/migration/migrations/1.cr:…
19 июн '17 в 03:08
1 ответ

Проблема со связью со статической библиотекой C в программе Crystal

Я хотел поэкспериментировать с возможностями взаимодействия C в Crystal, поэтому я написал небольшую POC-библиотеку на C. Я могу связать библиотеку с C-программой и использовать ее. Тем не менее, когда я пытаюсь связаться с ним из моей программы Cry…
23 фев '17 в 22:13
0 ответов

Как получить метод оператора индекса ([]) как Proc

Я хочу получить метод оператора индекса ([]) из Array как Proc, но я продолжаю получать ту же ошибку: expecting token 'IDENT', not [], Вот как я пытаюсь получить доступ к оператору индекса (как обычный метод): ->array.[](Int32) Я просто хочу полу…
17 янв '19 в 03:49
1 ответ

Как указать IP-адрес для исходящего соединения?

Мой сервер имеет два IP-адреса. Например, если у меня есть два приложения Crystal, как я могу заставить каждое из них работать с указанным IP-адресом?
23 окт '17 в 04:46
2 ответа

Crystal-lang httpget basic_auth

Я пишу некоторый код на Ruby... Но я не могу понять, как базовая аутентификация работает с Crystal-lang. В ruby ​​мне всегда приходилось использовать request.basic_auth, но это, вероятно, не работает в Crystal lang. Что я делаю рубин? Может ли кто-н…
19 авг '16 в 22:45
1 ответ

Crystal lang: Тип арифметики, принадлежит Союзу?

Я пытаюсь реализовать функцию: def foo(t : Class) if t in Int::Signed # ... end end Но как реализовать t in Int::Signed? Где Int:: Подписано я знаю is_a?(Int::Signed) но здесь параметр имеет тип Type, Благодарю.
29 июн '18 в 06:40
1 ответ

Crystal .cycle Recycle после завершения цикла

Так в моем случае def dynamic_data() data = [] of String # some data from db # data << db["somekey"].to_s return data end dynamic_data().cycle do |d| # some stuff puts d end Мои данные достигают более 500 строк и будут продолжать расти и увели…
29 авг '17 в 06:43
3 ответа

Как получить следующие n бит с помощью Crystal

Я пытаюсь прочитать информацию ID3v2 из mp3 файла. Часть этого - чтение флагов. f.gets n получает меня n байты, но мне нужно n биты.
03 май '17 в 05:06
1 ответ

Потоки HTTP-запросов в Crystal

У меня есть код, который должен работать "параллельно" (не реально, я знаю, что Crystal не поддерживает параллелизм). require "http/client" thread_count = 4 resps = [] of HTTP::Client::Response mutex = Thread::Mutex.new urls = [] of String (1..10).e…
05 мар '18 в 14:14
2 ответа

Как превратить массив кодовых точек (Int32) в строку?

В Crystal строка может быть превращена в массив (Int32) кодовых точек: "abc".codepoints # [97,98,99] Есть ли способ превратить массив обратно в строку?
19 сен '17 в 00:03