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

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

新規登録して質問してみよう
ただいま回答率
85.47%
if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Swift

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

Q&A

2回答

1882閲覧

if文の中に定義した変数を条件式に使う場合

po_tato

総合スコア97

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Swift

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

0グッド

0クリップ

投稿2017/07/31 11:36

編集2017/08/01 01:02

if文を記載するときに、if文中で宣言した変数などを使って
そのif文自体の条件式に使用する方法などあるのでしょうか?
例えば下の文の②部分は条件の①より後に記載していますが、
それを①に使用しています。
このように後に記述した内容を先に書いているものに使うことなどできるのでしょうか?
またどのようにすればいいのでしょうか?
知識不足、説明下手ですが何か情報があれば知りたいです、、

import UIKit class ViewController: UIViewController{ let ud = UserDefaults.standard let a:Int = 10 var b:Int? override func viewDidLoad() { super.viewDidLoad() if self.b == nil・・・① { if ( a >= 0 ) { print("。。。。。。") } else { ud.set(self.a, forKey: "alfa") self.b = ud.object(forKey: "alfa") as? Int・・・② print("。。。。。") } } } }

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

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

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

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

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

s.t.

2017/07/31 12:47

ソースコードは```で囲んでください。非常に見づらいです。
fuzzball

2017/08/01 00:46

self.bを使いたくないのであれば、self.bを削除した状態でコードを書いて下さい。あと、コードは ``` で囲って下さい。非常に見づらいです。
po_tato

2017/08/01 01:10

すみません、修正しました。②の行で let b=ud.object(forKey:"alfa") as? Intに変更しても、①で使えないきがするのですが。。
fuzzball

2017/08/01 01:37

正直、何をしようとしているのか全く分からないのですが、「①で使えないきがするのですが。。」という認識は正しいです。ようするに、無理なことをやろうとしているのです。一体何をしようとしているのでしょうか?
po_tato

2017/08/01 02:13

やはりそうですよね。どうしてもelseの中で②の処理をしないといけない状況下で、解決方法があればと思いましたが、違う方法を考えてみます。
fuzzball

2017/08/01 02:38

self.bでダメな理由は何なのでしょうか?
po_tato

2017/08/01 05:15

self.bだとメンバ変数を参照してしまうのでうまく条件分岐しないんですよね。。私としては何度も言いますが、②の部分を条件のbの値に使いたいんですけど、やはりそれはうまくいきませんね。
fuzzball

2017/08/01 05:30

やっぱり何言ってるのか分かりません‥。私ももう一度書かせてもらいますが、self.bを使いたくないのであれば、self.bを使わないコードを書いてみて下さい。エラーが出ようが、まともに動かなかろうが構いませんので。回答する以前に、質問の意味(意図)が分からないのです。
guest

回答2

0

まず①のself.b は if文で変数を宣言してるのではなく
メンバ変数の
var b:Int?
を参照しているだけですよ。
self.bは var b:Int?のことです。

つまり bがnilなら①のifの中身が実行されます。

bはメンバー変数なので同じクラス内であればどこから参照しようが、
いつデータを代入しようが構いません。

投稿2017/07/31 13:31

Tak1016

総合スコア1408

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

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

po_tato

2017/08/01 00:40

返信感謝致します。 そうなんです、このままだとメンバ変数を参照してしまうので、私は②で代入した値のbを使用してif分の条件を指定したいのですが、やり方があるのかどうかもわからないのです。。。
guest

0

もしかして、①のif文を

swift

1if ud.object(forKey: "alfa") as? Int == nil {

にしたらOKだったりしますか?

投稿2017/08/01 05:48

fuzzball

総合スコア16731

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

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

po_tato

2017/08/01 11:33

それを思いついて試してみたのですが、だめでした。違う考え方を探してみたいと思います。親切にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問