Вопросы по теме 'crystal-lang'

Как выполнить код из строковой переменной в Crystal?
Мне нравится eval в Ruby, потому что он работает довольно просто: eval("puts 7 * 8") # => 56 Что такое эквивалент eval в Crystal? Я знаю, что мы можем сделать что-то подобное с макросом: macro eval(code) {{code.id}} end...
952 просмотров
schedule 11.06.2024

Как указать типы данных для парсинга JSON?
У меня есть ответ JSON, который представляет собой массив хешей: [{"project" => {"id" => 1, "name" => "Internal"}, {"project" => {"id" => 2, "name" => "External"}}] Мой код выглядит так: client = HTTP::Client.new(url,...
2884 просмотров
schedule 16.08.2022

Почему Object не может быть типом аргумента для объекта Proc
У меня такой код: p = ->(x : Object) { x } puts p.call(3) и когда я его компилирую, я получаю такое исключение: пока нельзя использовать как тип аргумента Proc, используйте более конкретный тип может кто-нибудь объяснить мне,...
133 просмотров
schedule 15.03.2023

Может ли тип переменной в языке Crystal быть ограничен классами, которые наследуются от одного класса
Я имею в виду: class Foo; end class Bar < Foo; end class Cux < Foo; end Можно ли ограничить тип переменной классами, унаследованными от Foo , без объединений, например, x : Foo+ ?
94 просмотров
schedule 13.06.2023

Как выполнить сценарий оболочки в Crystal при захвате вывода?
Я хочу выполнить сценарий оболочки при обработке вывода stdout и stderr. В настоящее время я выполняю команды, используя Process.run , с shell=false и тремя каналами для stdin, stdout и stderr. Я создаю волокна для чтения из stdout и stderr и...
3314 просмотров
schedule 08.07.2023

Есть ли простой способ отсортировать массив в Crystal?
Я новичок в Crystal, и мне интересно учиться и работать. Какой простой и быстрый способ отсортировать массив?
908 просмотров
schedule 03.08.2023

Кристалл: Как мне найти SHA256-хэш двоичного значения?
Я новичок в Кристалле. Я хотел бы попытаться найти хэш SHA256 шестнадцатеричной строки. Мне удалось кое-что заработать: sha256 = OpenSSL::Digest.new("sha256") puts sha256.update("abcd") Но я не уверен, как поместить двоичное значение...
1631 просмотров
schedule 08.06.2022

Как изменить HTTP::Response после того, как он был записан в
Я пытаюсь написать некоторые инструменты для Crystal (в частности, Kemal), где я могу увидеть, является ли тип содержимого ответа text/html , и изменить тело ответа, которое уже было записано в HTTP::Response , прежде чем оно будет отправлено...
124 просмотров
schedule 22.12.2022

Кристалл возвращает отрицательное число при использовании .. между двумя положительными
Как ни странно, Crystal выводит отрицательные числа. Код, который я использую, (1..10000000000).each do |num| if num % 10000000 == 0 if num < 0 puts "error #{num}" exit else puts num end end end Это...
87 просмотров
schedule 19.02.2022

Кристалл проверяет, есть ли подкласс списка классов
Итак, я хочу проверить, является ли возникшая ошибка подклассом списка конкретных исключений во время выполнения. Пользователи могут передать массив исключений во время выполнения. Я думал, что просто использую is_a? , и он работает, как...
164 просмотров
schedule 01.12.2022

Итерировать по массиву и вернуть себя
Этот код: p [1, 2].each{ "foo" } производит nil , в то время как я хочу, чтобы он поместил [1, 2] после итерации. Как сделать в кристалле?
605 просмотров
schedule 17.01.2024

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 строк и будут...
71 просмотров
schedule 13.07.2023

Введите псевдоним и хэш в качестве параметра метода
Я пытаюсь создать инициализатор для класса, который получает параметр Hash as. Хеш - это хеш {String => Type}, который может быть вложенным. Я получаю сообщение об ошибке при запуске этого кода: #file: types.cr class Types alias Type = Nil |...
372 просмотров
schedule 14.09.2023

Собственный графический интерфейс Crystal
Есть ли у Crystal собственные библиотеки GUI? Уже есть несколько осколков, которые реализуют известные библиотеки, такие как QT или SFML (на самом деле все, что связано с C), но мне нужна нативная библиотека, так как я не хочу иметь никаких...
590 просмотров
schedule 02.05.2023

Почему BigFloat.to_s недостаточно точен?
Я не уверен, что это ошибка. Но я играл с big и не могу понять, почему этот код работает так: https://carc.in/#/r/2w96 Код require "big" x = BigInt.new(1<<30) * (1<<30) * (1<<30) puts "BigInt:...
150 просмотров
schedule 17.05.2022

Как создать HMAC в crystal-lang
См. документацию по OpenSSL::HMAC . Я пытаюсь это: require "openssl" puts OpenSSL::HMAC.hexdigest(:sha256, "secret key", "data") и я получаю эту ошибку: неопределенная константа OpenSSL::HMAC Другие методы OpenSSL работают...
219 просмотров
schedule 31.03.2023

Почему Кристалл считает это ложным?
На практике я хочу создать функцию, возвращающую первый индекс символа в строке. Функция принимает два аргумента: строку и символ, для которых требуется получить индекс. Я перебираю строку, чтобы сопоставить ее с предоставленным символом. Я печатаю...
86 просмотров
schedule 09.05.2022

запуск команд оболочки на языке кристалла и захват вывода
Я привык использовать open3 для запуска команд в Ruby. Поскольку похоже, что в crystal-lang нет эквивалентной библиотеки, я запутался вот что: def run_cmd(cmd, args) stdout_str = IO::Memory.new stderr_str = IO::Memory.new...
1021 просмотров
schedule 14.07.2022

простой пример использования API Google-People
я впервые использую Google API, и у меня возникли проблемы с api google-people, может ли кто-нибудь здесь объяснить, какие данные заголовка / тела необходимы для аутентификации (я использую https://crystal-lang.org/api/latest/OAuth2.html ) и,...
357 просмотров
schedule 27.02.2022

Как переменные экземпляра класса реализованы в Crystal?
Если у меня есть экземпляр A , реализованы ли переменные экземпляра как указатели? Другими словами, доступны ли переменные экземпляра по ссылке даже при использовании структур? class A @title = "the title" @my_val = MyStruct.new end
131 просмотров
schedule 28.03.2024