Skip to content

Instantly share code, notes, and snippets.

@kateinoigakukun
kateinoigakukun / CodePiece.swift
Created April 2, 2017 08:10
switchはhashValueを見てるのか? #CodePiece
enum Fruit {
case peach
case apple
case grape
}
var i = 3
var emptyEnumPtr = withUnsafePointer(to: &i) { UnsafeRawPointer($0) }
.bindMemory(to: Fruit.self, capacity: MemoryLayout<Fruit>.size)
@kateinoigakukun
kateinoigakukun / CodePiece.swift
Created April 2, 2017 08:18
目的完了してしまった #CodePiece
enum Fruit {
case peach
case apple
case grape
}
var fruits: [Fruit] = []
for i in 0..<0xff*MemoryLayout<Fruit>.size {
var n = i
@kateinoigakukun
kateinoigakukun / CodePiece.swift
Created April 2, 2017 08:22
forの部分をきれいに書けない #CodePiece
protocol EnumExtension {}
extension EnumExtension where Self: Hashable {
static var all: [Self] {
var result: [Self] = []
for i in 0..<0xff*MemoryLayout<Self>.size {
var n = i
let ptr = withUnsafePointer(to: &n) { UnsafeRawPointer($0) }
.bindMemory(to: Self.self, capacity: MemoryLayout<Self>.size)
if ptr.pointee.hashValue != n { break }
@kateinoigakukun
kateinoigakukun / CodePiece.swift
Created April 2, 2017 10:59
Protobufで生成されるコード、セッター部分微妙じゃないですか? #CodePiece
public var optionalValue:SomeObject! {
get {
return builderResult.optionalValue
}
set (value) {
builderResult.hasOptionalValue = true //nilの場合でもtrueに
builderResult.optionalValue = value
}
}
@kateinoigakukun
kateinoigakukun / CodePiece.swift
Created April 18, 2017 13:30
こうなりました #swift #CodePiece
import UIKit
class LinkTextView: UITextView {
private var interractDate = Date()
var linkTextViewDelegate: LinkTextViewDelegate?
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
interractDate = Date()
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let textView = UITextView(frame: self.view.frame)
view.addSubview(textView)
let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 50))
textView.inputAccessoryView = toolBar
@kateinoigakukun
kateinoigakukun / CodePiece.swift
Created August 27, 2017 12:01
おうちプロジェクトRouter #swift #CodePiece
extension Router {
mutating func registerRouting() {
register(routing: TweetRoute.self) { (route: TweetRoute) -> UIViewController in
return TweetDetailViewController.ex.make(with: (id: route.id, userName: route.userName))
}
}
struct TweetRoute: Routing {
static var scheme: String { return "https://" }
@kateinoigakukun
kateinoigakukun / keyword_arg.rb
Last active September 4, 2017 15:06
Ruby keyword arguments extention
class BasicObject
class << self
def func(args, &block)
method = args[:method]
args_map = args[:args]
define_method(method) do |args|
keys = args_map.values.map { |v| ":#{v}" }.join(',')
values = args_map.keys.map { |k| "'#{args[k]}'"}.join(',')
s = eval("Struct.new(#{keys}).new(#{values})")
s.instance_eval(&block)
@kateinoigakukun
kateinoigakukun / CodePiece.swift
Created October 7, 2017 13:05
これ、'T' does not have a member type named 'A'; did you mean 'A'? になる #swift #CodePiece
func foo<T: P>(a: T) -> T.A {
fatalError()
}
struct B {}
protocol P {}
extension P {
typealias A = B
}
@kateinoigakukun
kateinoigakukun / CodePiece.swift
Created February 2, 2018 02:06
面白い #swift #CodePiece
func tru<T1, T2>() -> (T1) -> (T2) -> (T1) {
return { t1 in
return { t2 in
return t1
}
}
}
func fal<T1, T2>() -> (T1) -> (T2) -> (T2) {
return { t1 in