Как вы ссылаетесь на перегрузки функции для использования в качестве закрытия? [Дубликат]

Если у вас есть такая конфигурация:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot "/var/www/example.com"

    <FilesMatch "\.php$">
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
</VirtualHost>

Раскомментируйте следующие строки в вашем httpd.conf

LoadModule proxy_module lib/httpd/modules/mod_proxy.so
LoadModule proxy_fcgi_module lib/httpd/modules/mod_proxy_fcgi.so

Это работает для меня

5
задан Yaman 5 February 2015 в 15:03
поделиться

1 ответ

Поскольку Toto имеет два метода с одним и тем же именем, но с разными сигнатурами, вы должны указать, какой из них вы хотите:

let f1 = aToto.toto as () -> Void
let f2 = aToto.toto as (String) -> Void

f1()         // Output: f1
f2("foo")    // Output: f2

Альтернативно (как @Antonio правильно отмечено):

let f1: () -> Void     = aToto.toto
let f2: String -> Void = aToto.toto

Если вам нужны функции curries, принимающие экземпляр класса в качестве первого аргумента, вы можете действовать одинаково, только подпись отличается (сравните комментарий @Antonios к вашему вопросу):

let cf1: Toto -> () -> Void       = aToto.dynamicType.toto
let cf2: Toto -> (String) -> Void = aToto.dynamicType.toto

cf1(aToto)()         // Output: f1
cf2(aToto)("bar")    // Output: f2
10
ответ дан Martin R 21 August 2018 в 23:48
поделиться
  • 1
    Что эквивалентно let f1: Void -> Void = aToto.toto и let f2: String -> Void = aToto.toto – Antonio 5 February 2015 в 15:16
  • 2
    @ Антонио: Вы правы, спасибо. (На самом деле я пробовал это сначала, но должен был сделать некоторую ошибку, потому что он не компилировался изначально.) – Martin R 5 February 2015 в 15:20
  • 3
    Нет ли различия между aToto.toto и aToto.dynamicType.toto? Первая возвращает () -> Void, а вторая возвращает Toto -> () -> Void. У меня есть lib, который принимает второй тип в качестве параметра, поэтому мне показалось, что мне нужно получить свой func с файлом dynamicType. Но aToto.dynamicType.toto as (String) -> Void возвращает следующую ошибку: String is not a subtype of Toto – Yaman 5 February 2015 в 15:27
  • 4
    @Yaman: см. Обновленный ответ. – Martin R 5 February 2015 в 15:32
  • 5
    Правильно ! Спасибо вам за эти объяснения;) – Yaman 5 February 2015 в 15:37
Другие вопросы по тегам:

Похожие вопросы: