#scala #compiler-construction #shebang #scalac
#scala #компилятор-конструирование #дело #scalac
Вопрос:
Интерпретатор scala допускает ошибки, но, как ни странно, scalac их игнорирует. Существуют ли какие-либо приемы, подобные этим, чтобы обойти этот недостаток?
Ответ №1:
#! в scala должно быть закрыто с помощью !#. Например:
#!/bin/bash
script_dir=$(cd $(dirname "$0") >/dev/null; pwd -P)
classes_dir=${script_dir}/build/classes
src_dir=${script_dir}/src
mkdir -p ${classes_dir}
scalac -d ${classes_dir} $(find ${src_dir} -name '*.scala')
exec /usr/bin/scala -classpath ${classes_dir} "$0" "$@"
!#
Ответ №2:
Почему бы не удалить их прозрачно перед вызовом scalac
в вашем скрипте сборки?
Комментарии:
1. Я бы хотел, чтобы мне не приходилось удалять какой-либо код. Я готов использовать непонятный синтаксис shebang, если это необходимо для достижения этой цели.
Ответ №3:
Я не думаю, что это вопрос «неясного синтаксиса shebang», а скорее проблема «спецификации языка».
В статье Википедии о Shebang упоминается:
Содержимое строки shebang будет автоматически проигнорировано интерпретатором, поскольку
#
символ является маркером комментария во многих языках сценариев.
Некоторые языковые интерпретаторы, которые не используют хэш-метку для начала комментариев, такие как Scheme, все еще могут игнорировать строку shebang.
Итак, если scalac не имеет в своей спецификации директив игнорировать первые строки как «заголовок скрипта», подобный Scheme, нам нужно дождаться вашего обращения Jira 5179.