StringをIntに変換するとき、どう書いたらスマートなんでしょうね。 例えば、ある本の最初のサンプルアプリで、初心者向けに説明するときはこんな感じ。 電卓のような、ボタンに1~9の文字がセットされていて、それをIntに変換するときの処理。
func stringToInt(_ string: String) -> Int {
var value: Int = 0
import Foundation | |
import AVFoundation | |
public enum AVMetadataObjectType { | |
case UPCECode | |
case Code39Code | |
case Code39Mod43Code | |
case EAN13Code | |
case EAN8Code | |
case Code93Code |
より良くするために考えたいのが、 これだと
case .division:
if secondValue != 0 {
value = firstValue / secondValue
}
import UIKit | |
//でもこれだと、styleの指定ができないので、3つのタプルにしてみた | |
private func showAlert(title: String, message: String, actions: [(String, UIAlertActionStyle, ((UIAlertAction) -> Void)?)]) { | |
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) | |
actions.forEach { | |
let action = UIAlertAction(title: $0, style: $1, handler: $2) | |
alertController.addAction(action) | |
} |
{
"data" : {
"param" : "hoge"
}
}
{
//見た目は同じInitializer。単数か複数かは気にする必要なし。勝手にsingleかmultipleに振り分けてくれる。 | |
enum PossibleArrayType<T> { | |
case single(T) | |
case multiple([T]) | |
init(_ single: T) { | |
self = .single(single) | |
} | |
init(_ multiple([T]) { |
enum Sometype<T: SomeProtocol> { | |
case one | |
case two | |
case three | |
associatedtype Associated { | |
switch { | |
case .one: return One.self | |
case .two: return Two.self |
protocol HogeType { | |
init(value: String) | |
} | |
final class HogeClass { //finalにしておけば | |
var value = "" | |
var value2 = "" | |
required public init(value: String, value2: String) { | |
self.value = value |
import Foundation | |
import Firebase | |
typealias FIRParamters = [String : NSObject] | |
protocol EventReportType { | |
var name: String { get } | |
var parameters: FIRParamters? { get } | |
func sendLog() | |
} |
func repeated<T:Integer>(word: String, count: T) -> String { | |
guard count >= 0 else { | |
return "" | |
} | |
return String(repeating: word, count: Int(count.toIntMax())) | |
} | |
repeated(word: "🐬", count: 5) |