В C существуют отдельные пространства имен для функций и структур.Модуль Darwin экспортирует как struct flock
, так и func flock
.Если я пытаюсь вызвать функцию, компилятор разрешает имя в инициализаторе структуры:
let result: Int32 = Darwin.flock(fd, LOCK_EX)
^^^^^
Cannot invoke initializer
for type 'flock' with an argument list
of type '(Int32, Int32)'
Если я пытаюсь разрешить имя вручную через именованный импорт, я все равно получаю ошибку:
import func Darwin.flock
^^^^^^^^^^^^
Ambiguous name 'flock' in module 'Darwin'
Также не повезло со ссылкой на функцию:
let functionNotStruct: (Int32, Int32) -> Int32 = Darwin.flock
^^^^^^^^^^^^^^^^^^^^^^^
Cannot convert value of type 'flock.Type'
to specified type '(Int32, Int32) -> Int32'
Есть ли способ сказать компилятору, что я хочу функцию, а не инициализатор?