Skip to content

Instantly share code, notes, and snippets.

View chris-hatton's full-sized avatar
👦
Intrepid

Chris Hatton chris-hatton

👦
Intrepid
View GitHub Profile
@chris-hatton
chris-hatton / SelfGenericTypeTest.swift
Last active November 9, 2015 19:27
A test to see whether Swift's Generics system can carry through a self-derived type, which is possible, and often useful, in Java.
class A<SelfType : A<SelfType>>
{
}
class B : A<B> // Line fails to compile with: "'A' requires that 'B' inherit from 'A<B>'" even though it does
{
}
@chris-hatton
chris-hatton / GenericOverloadedFunctionTest.swift
Last active December 31, 2015 21:36
Significance of top-level definition of overloaded functions
protocol ProtocolA {}
protocol ProtocolB {}
func overloadingTest <T where T: ProtocolA>( obj: T ) -> String
{
return "It's an implementation of Protocol A"
}
func overloadingTest <T where T: ProtocolB>( obj: T ) -> String // This compiles fine, and the appropriate 'topLevelTest' function is bound
protocol ProtocolA {}
protocol ProtocolB {}
func overloadingTest ( obj: String ) -> String
{
return "It's a String"
}
func overloadingTest ( obj: Int ) -> String // This compiles fine, and the appropriate 'topLevelTest' function is called
@chris-hatton
chris-hatton / nillableReturnTypeTest.swift
Last active February 8, 2016 04:28
A test of inferred return types in Swift, both generic and overloaded nillable
import UIKit
class A : CustomDebugStringConvertible
{
let message: String
required init( message: String ) { self.message = message }
var debugDescription: String { return message }
}
@chris-hatton
chris-hatton / HTTPStatus.swift
Last active May 17, 2016 04:43
Implementation of HTTP status codes as Swift enumerations, with descriptions
//
// HTTPStatus.swift
//
// Created by Chris Hatton on 17/05/2016.
//
// Transcribed from: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
//
import Foundation
@chris-hatton
chris-hatton / MonoBehaviourInvokeExtension.cs
Last active July 18, 2016 12:57
Adds a better co-routine + delegate based Invoke to MonoBehaviour
using System;
using System.Collections;
using UnityEngine;
/*
* Use by explicit 'this' e.g. this.Invoke( 3.0f, delegate { doSomething(); } );
*/
static class MonoBehaviourInvokeExtension
{
public static void Invoke( this MonoBehaviour monoBehaviour, float delay, Action action )
@chris-hatton
chris-hatton / AuthModel.swift
Created September 9, 2016 02:55
Associated types and Generic constraints not playing nice in Swift 3.0
import UIKit
protocol HTTPRequest
{
associatedtype ResultType
func start( callback: (ResultType)->() )
}
@chris-hatton
chris-hatton / fatalErrorTest.swift
Last active September 15, 2016 22:46
Test of fatalError() backed by @NoReturn (Swift2) vs. Never (Swift3)
// This compiles in both Swift 2 and 3
func test1() -> Int {
fatalError()
}
// This compiled in Swift2 but no longer does in Swift 3
let test2 : () -> Int = {
fatalError()
}
@chris-hatton
chris-hatton / TreeView.swift
Last active September 20, 2016 15:52
Weekend Playground fun: TreeView
import UIKit
typealias Bough = (rotation:CGFloat, length: CGFloat, scale: CGFloat, hue: CGFloat)
final class TreeView : UIView {
private let limit = 10
private let boughs : [Bough] = [
(rotation: -25, length: 85, scale: 0.75, hue: 0.04),
(rotation: 30, length: 100, scale: 0.65, hue: 0.02)
import UIKit
final class RubberDuckyController : UIViewController {
@IBOutlet weak var leftButton : UIButton!
@IBOutlet weak var rightButton : UIButton!
@IBOutlet weak var textLeftButtonUnderline : UIView!
@IBOutlet weak var shapeRightButtonUnderline : UIView!