質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1362閲覧

Swift関数に引数を指定すると実行できない

hodoru3sei

総合スコア284

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/07/26 04:32

Swiftで作った関数がうまく動かず困っています。

lang

1 2func helloFactory() -> (Int, String) -> () { 3 func sayHello(count:Int, words:String){ 4 for _ in 0...count{ 5 print(words) 6 } 7 } 8 return sayHello 9} 10let english = helloFactory 11english(10, "Hello World")

englishの第一引数のところでエラーが出てしまっていますエラーの内容は下記のようなものです。

lang

1helloWorld.swift:10:11: error: argument passed to call that takes no arguments 2english(10, "Hello World") 3 ~~~^~~~~~~~~~~~~~~~~

試しに引数を無くして同じようなコードを書いてみたところ問題なくコンパイルができ正常に実行できました。調べて見たところエラーは定数を変更しようとした際に発生するらしかったのですが、10という数字は定数ではないですしよくわかりませんでした。
また、引数を無くし、関数にデフォルト引数を設定してみたりもしたのですが、動きませんでした。

引数を無くして動いたコードを貼っておきます

lang

1func helloFactory() -> () -> () { 2 func sayHello(){ 3 print("hogeeee") 4 } 5 return sayHello 6} 7let english = helloFactory() 8english()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2018/07/26 04:46

「エラーは定数を変更しようとした際に発生する」というのは argument passed... のことですか?でしたら全く違いますよ。
hodoru3sei

2018/07/26 05:42 編集

エラーでググったところ https://teratail.com/questions/44306 ここに行き着きまして定数なのかなと思っていたんですがこのエラーって定数の値を変更しよう死した際に発生するエラーというわけではないんでしょうか
fuzzball

2018/07/26 06:16 編集

その回答にも書いてありますが、エラー自体は「引数の無いものに対して引数を渡している」という意味です。その回答の場合、let value(定数)だからSampleのイニシャライザには引数が無いのに、Sample(value: num) と引数を渡しているので、このエラーが発生します。もっと簡単なエラーの再現コードを回答に追記しておきます。
hodoru3sei

2018/07/26 06:23 編集

なるほど!丁寧にありがとうございます。もやもやが晴れました
guest

回答1

0

ベストアンサー

ただのうっかりミス?(下のコードには括弧付いてるのに)

swift

1let english = helloFactory() //※ 2english(10, "Hello World")

エラーの再現

swift

1func hoge() {} 2hoge(0) 3//=> error: argument passed to call that takes no arguments

投稿2018/07/26 04:49

編集2018/07/26 06:16
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hodoru3sei

2018/07/26 05:40

すみませんありがとうございます! 完全にうっかりミスでした...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問