Как передать необязательный аргумент оператору в Julia - PullRequest
1 голос
/ 14 июня 2019

Я хотел бы проверить приблизительное равенство, работает ли префиксная форма

≈(0.9, 1; atol = 0.1)

Можно ли указать необязательный аргумент в инфиксной форме?Что-то вроде (код не работает)

0.9 ≈ 1 atol = 0.1

Ответы [ 2 ]

2 голосов
/ 14 июня 2019

Вы должны использовать префиксный синтаксис вызова функции для передачи аргументов с ключевыми словами в функцию.Макрос @test, предоставляемый стандартной библиотекой Test, позволяет указывать аргументы ключевых слов для путем добавления конечных пар key=val, например:

julia> using Test

julia> @test 1 ≈ 1.001 rtol=0.001
Test Passed

Это особая функция *Макрос 1008 *, однако, не является общей особенностью операторского синтаксиса.Невозможно передать ключевые аргументы оператору с инфиксным синтаксисом.

1 голос
/ 14 июня 2019
≈(a, t::Tuple{Float64,Float64}) = isapprox(a, t[1]; atol=t[2])

julia> 1.1 ≈ 1.2
true

julia> 1.0 ≈ (0.9, 0.15)
true
...