Я пытаюсь записать .bat файл для автоматизации некоторых команд оболочки. Большинство команд легко, и я могу просто поместить их в пакетный файл непосредственно, но существует одна команда, которую вместо того, чтобы брать параметры командной строки, ожидает, что Вы введете в опциях, Вы хотите использовать "стандартный вход". Я не абсолютно уверен, что это означает. Кто-то может сказать мне, как сделать это? Текст я хотел бы быть введенным, является содержанием одного из файлов в каталоге: "options.txt", который я хочу связать с переменной в пакетном файле "$ (additionaloptions)".
Иметь смысл?
newtype NonNegative a = NonNegative a
toNonNegative :: (Num a, Ord a) => a -> NonNegative a
toNonNegative x
| x < 0 = error "Only non-negative values are allowed."
| otherwise = NonNegative x
fromNonNegative :: NonNegative a -> a
fromNonNegative (NonNegative x) = x
Будьте осторожны, чтобы не использовать конструктор NonNegative напрямую. Это будет проще, если поместить его в отдельный модуль и не экспортировать.
Теперь можно использовать (отображение в NonNegative) для ленивого преобразования списка чисел.
Для этого по-прежнему потребуется проверка во время выполнения, где бы вы ни вводили необработанные номера.
Также можно использовать Data.Word.
-121--3632241- Возвращаемое значение оператора = ()
не может быть использовано, как вы пытались продемонстрировать. Если вы думаете о перегруженном операторе как о собственной функции, это может иметь больше смысла.
Например:
int main() {
myObject obj, obj2;
obj.isNumber = true;
obj.numVal = 17.5;
obj2.operator=(obj); // equivalent to obj2 = obj
}
Причина number = obj;
не работает, потому что вы определили myObject:: operator = ()
, тогда как number
будет использовать double:: operator = ()
(хорошо, технически нет double:: operator = () , поскольку это фундаментальный тип, а не
Интересно отметить, что эта функция ведет себя как любая другая функция в том, что возвращаемое значение ( return right.numval;
) игнорируется, когда оно не используется. Однако возвращаемое значение может быть назначено или использовано подобно возвращаемому значению любой другой функции, поэтому, если вы действительно хотите, вы могли бы сделать что-то подобное:
int main() {
myObject obj, obj2;
obj.isNumber = true;
obj.numVal = 17.5;
double number;
// number = obj; still won't work.
number = obj2 = obj; // equivalent to number = obj2.operator=(obj)
}
Это только так полезно. Как уже упоминалось, при попытке присвоения объектов myObject фундаментальным типам необходимо обратиться к операторам преобразования
.
Обычный способ сделать это в файлах .bat - использовать эхо для записи небольшого текстового файла, а затем перенаправить текстовый файл в стандартный файл команды.
@echo foo > bar.txt
@echo if you need multiple lines >> bar.txt
the_cmd < bar.txt
В вашем конкретном примере это будет что-то вроде
copy myfile.txt bar.txt
@echo %variable% >> bar.txt
Тот факт, что вы упоминаете $ (переменная), подсказывает мне, что это make-файл, а не пакетный файл. для makefile, это лучший способ.