0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
static func == (lhs: Card, rhs: Card) -> Bool {
return (lhs.color == rhs.color &&
lhs.number == rhs.number &&
lhs.shading == rhs.shading &&
lhs.symbol == rhs.symbol) ||
(lhs.color == rhs.color &&
lhs.number != rhs.number &&
lhs.shading != rhs.shading &&
lhs.symbol != rhs.symbol) ||
(lhs.color != rhs.color &&
lhs.number == rhs.number &&
lhs.shading != rhs.shading &&
lhs.symbol != rhs.symbol) ||
(lhs.color != rhs.color &&
lhs.number != rhs.number &&
lhs.shading == rhs.shading &&
lhs.symbol != rhs.symbol) ||
(lhs.color != rhs.color &&
lhs.number != rhs.number &&
lhs.shading != rhs.shading &&
lhs.symbol == rhs.symbol) ||
(lhs.color != rhs.color &&
lhs.number != rhs.number &&
lhs.shading != rhs.shading &&
lhs.symbol != rhs.symbol)
}
Пытаюсь реализовать правила игры в Set протоколом Equatable. Говнокод?
govnokoder3948 ,
24.05.2018 (Updated 24.05.2018 )
0
1 2 3 4
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let count = self.gameResults == nil ? 0 : self.gameResults?.count
return count!
}
nil-coalescing operator? Не не слашали.
astmus ,
04.04.2018 (Updated 04.04.2018 )
0
1 2 3 4 5 6 7
if gameResults != nil && (gameResults?.count)! > 0 {
for gameResult in self.gameResults! {
let newLine = "\(gameResult.gameSession!.gameTable!.tableNumber!) / \(gameResult.sessionHand!.endTime!) / \(Utils.getShortGameName(gameName: gameResult.gameSession!.game!.name!)),\(String(describing:gameResult.sessionHandResult!.score!.doubleValue)),\(String(describing:gameResult.sessionHandResult!.profitSum!.doubleValue)),\(String(describing:gameResult.sessionHandResult!.credits!.doubleValue))\n"
csvText.append(newLine)
}
}
Как говорится береженого бог бережет... даже если опционал не ниловый
astmus ,
04.04.2018 (Updated 04.04.2018 )
0
1 2 3
if let viewControllers = self.navigationController?.viewControllers {
self.navigationController?.popToViewController(viewControllers[viewControllers.count - 3], animated: true)
}
Попытка вернуться на рут контроллер.
torip3ng ,
03.04.2018 (Updated 03.04.2018 )
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
protocol Multi {
associatedtype T
associatedtype U
func printSelf()
}
extension Multi where T == Int, U == Float {
func printSelf() {
print("Int & Float!")
}
}
extension Multi where T == String, U == Int {
func printSelf() {
print("String & Int!")
}
}
extension Multi {
func printSelf() {
print("Unknown")
}
}
class MultiImplementationIntFloat: Multi {
typealias T = Int
typealias U = Float
}
class MultiImplementationStringInt: Multi {
typealias T = String
typealias U = Int
}
class MultiImplementationInvalid: Multi {
typealias T = Float
typealias U = String
}
let m1 = MultiImplementationIntFloat()
m1.printSelf()
let m2 = MultiImplementationStringInt()
m2.printSelf()
let m3 = MultiImplementationInvalid()
m3.printSelf()
Multimethods в Swift с проверкой в compile-time
Desktop ,
10.03.2018 (Updated 01.04.2018 )
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
public class DialogBuilder: NSObject {
private var style: UIAlertControllerStyle
private var titleColor: UIColor?
/**
* initial DialogBuilder with UIAlertControllerStyle and for title color
*/
public init(style: UIAlertControllerStyle = .alert, titlecolor : UIColor?) {
self.style = style
if(titlecolor != nil)
{self.titleColor = titlecolor}
}
/**
* initial DialogBuilder with UIAlertControllerStyle
*/
public init(style: UIAlertControllerStyle = .alert) {
self.style = style
}
...
}
wwweshka ,
31.01.2018 (Updated 01.04.2018 )
0
1 2 3 4 5 6 7 8 9 10 11 12
func stateDidChange(contorl: TitledTextField?, isEpmtyState: Bool) {
let userCodeisEpmtyState = (contorl == userCodeTextView) ? isEpmtyState : (userCodeTextView.textValue().isEmpty)
let authCodeisEpmtyState = (contorl == authCodeTextView) ? isEpmtyState : (authCodeTextView.textValue().isEmpty)
changeEnterAvailabilityAccoardingToTextFieldsOccupancy (userCodeisEpmtyState, authCodeisEpmtyState)
}
/*
* Метод устанавливает активность кнопки энтер взависимости от заполнения текстовых полей
*/
private func changeEnterAvailabilityAccoardingToTextFieldsOccupancy(_ userCodeisEpmtyState: Bool, _ authCodeisEpmtyState: Bool) {
enter.isEnabled = !userCodeisEpmtyState && !authCodeisEpmtyState
}
Кто-то очень спешил выпустить версию, что пустота стала чем-то непонятным.
Да и вообще знание языков у человека на высшем уровне, вы ничего не понимаете!
А пробелов у меня ограниченное количество, буду их тыкать вдвойне после let, зато не буду их ставить после метода и всё будет ОК.
wwweshka ,
30.01.2018 (Updated 01.04.2018 )
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
func onlyCashLessEUR(_ rates : [CurrencyRateMto]) -> CurrencyRateItem {
var EUR : CurrencyRateItem? = nil
let cashLessEUR = rates.filter({$0.type.enumValue == CurrencyRateTypeMtoEnum.CASHLESS && $0.currency.isEUR() == true})
if(cashLessEUR.count > 0){
EUR = CurrencyRateItem(
cashLessEUR.first?.currency.getIcon(),
(cashLessEUR.first?.currency.id)!,
NumberFormatting.sum(cashLessEUR.first?.buyPrice?.price),
NumberFormatting.sum(cashLessEUR.first?.sellPrice?.price))
}
if(EUR == nil){
EUR = CurrencyRateItem(
UIImage.init(named: "currency_eur"),
"EUR",
"-",
"-")
}
return EUR!
}
"Я форматирую как далбаёб, и мне похер на то, что cashLessEUR.first опционален, я буду его юзать дальше".
wwweshka ,
30.01.2018 (Updated 01.04.2018 )
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
class AccountItem {
var companyName: String
let name: String
let number: String
let balance: String?
init(_ companyName: String, _ name: String, _ number: String, _ balance: String?, showCompanyName: Bool?) {
if(showCompanyName == true){
self.companyName = companyName
}
else
{
self.companyName = ""
}
self.name = name
self.number = number
self.balance = balance
}
}
If просто божественен: от сравнение с true и до showCompanyName.
wwweshka ,
30.01.2018 (Updated 01.04.2018 )
0
1 2 3 4
/**
Быстрый доступ к FileManager.default
*/
private let fileMngr = FileManager.default
FileManager не вместился :(
wwweshka ,
29.01.2018 (Updated 01.04.2018 )