A Tour of Go16~30学習メモ

こんにちは。がわわです。
今のところ滞りなく進められているので楽しいです。


以下、学習メモ。(自分で調べたものも含まれています)

  • iotaは定数の宣言で使用されconstが出るたびにリセットされて0になる、グループ内で定数を定義するごとに1増える
  • <<は左シフト、>>は右シフトという。例えば左シフトは0を右側に挿入する(ex. 1<<2なら2進数で100と表示され10進数で4になる)
  • for文の条件式の前後を省略できる、セミコロンも省略できる(要はwhile文)
  • for文の条件式を省略することで無限ループになる
  • math.Pow(x, y)でxのy乗を計算する
  • if文の条件式で宣言された変数はif, elseのスコープ内でのみ使える

A Tour of Go1~15学習メモ

こんにちは。がわわです。

GolangAPIを書いていて、わからないことが多くてしんどいことが多いので、基本を勉強するべきだと思い"A Tour of Go"の学習を開始しました。

実行環境が用意されているので楽しく勉強できます。
自分の学習法は

  1. 一度動かしてみて結果を確認する
  2. 中身を別のテキストエディタにコピペする
  3. 写経する
  4. もう一度実行して先の結果と一致したら次に進む

というふうに行っています。


プログラミングは書かないと覚えられないので、見てるだけではダメです。


さて、学習した中で知らなかった部分はここにまとめます。

  • 小文字のメソッド名:importした際に参照できない、大文字のメソッド名:importした際に参照できる
  • 戻り値パラメータに名前がつけられているメソッドはreturnだけ書けばそのパラメータが戻り値となる
  • :=の省略する形式は関数外ではエラー
  • fmt.Printfの中で%Tで型, %vで値を表示できる
  • fmt.Printlnだと"%T(%v)"で後ろにパラメータ書いても型や値が入らない
  • complex64は32ビットの複素数型, complex128は64ビットの複素数
  • 定数は:=で宣言できない

実機ビルドの際にunable to read module map contents fromというエラーが出た時の解決法

こんにちは。がわわです。

CocoaPodsでライブラリ管理をしていてある日突然題名の通りのエラーが出て焦りました。
解決法は以下です。

  1. Pods.xcodeprojファイルをクリック(Xcode画面上で青いアイコンのやつ)
  2. TARGETSでPodsを選択
  3. BuildSettingsから"module"で検索する
  4. Packagingに"Module Map File"があるのでその中身を消す

以上です。
pod installのたびにそこが書き換わっていて面倒だなと思っています。

Swiftでdelegateを使ってViewからViewControllerにアクションを渡す

こんにちは。がわわです。

Viewのサブクラスでボタンがタップされるなどのイベントを検知した時に、Viewで処理するのではなくViewControllerで処理した方が設計として綺麗だと思っています。

そういう時にdelegateを使いましょう。
delegateとは簡単に言えば処理を肩代わりしてくれる存在です。

import UIKit

protocol MyDelegate: class {
    func didTappedButton()
}

class MyView: UIView {

    weak var delegate: MyDelegate? = nil
    @IBOutlet weak var button: UIButton!
    
    override func awakeFromNib() {
        super.awakeFromNib()
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }
    
    @IBAction func tappedButton(sender: AnyObject) {
        self.delegate?.didTappeButton()
    }
}
import UIKit

class MyViewController: UIViewController, MyDelegate {
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func didTappedButton() {
        println("test")
    }
}

これでMyViewでボタンをタップすると"test"と表示されます。

悩んでいる時にぱっと解決するための方法

はじめまして。がわわと申します。

技術的な内容を中心にブログを続けていけたらと思います。

 

今日の記事は「悩んだ時の解決法」です。

いきなり技術的な内容じゃないですけど笑

 

アイディアが浮かばない。

設計がうまくいかない。

なんだかもやもやする。

 

そんな時に僕がよく取っている方法があります。

 

メモ帳に「何で悩んでる?」と一言書くだけです。

 

それに対して

「そもそも何をテーマに考えるか最初に決めてないからだ」

「画面遷移で渡すデータが多すぎるからか」

「あー昨日の飲み会でちょっと言いすぎたことを気にしているからなんだ」

など質問に答える形で文字にします。

 

そうすると自然と上の回答から解決法が思いつくものです。

 

大事なのは悩んでいる原因を文字にすることです。

 

原因がわかりさえすれば問題は意外と簡単に解決するものです。

良かったら試してみてください。