+1        
        
                            - 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
import std.stdio;
interface A {
    void M();
}
interface B : A {
    final void M() {
        writeln("BBBB");
    }
}
class C : B {
}
void main() {
    auto c = new C();
    c.M();
}
                                     
        
            а багры здесь тихие
> Error: class `C` interface function `void M()` is not implemented
        
        
             Desktop,
            20 Сентября 2023
 Desktop,
            20 Сентября 2023
        
        
        
            
        
        
                0        
        
                            - 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
import std.stdio;
interface Pethu {
    final void Say() {
        writeln("Hrueeee");
    }
}
void SayTwice(Pethu pethu) {
    pethu.Say();
    pethu.Say();
}
class PethuImpl : Pethu { }
void main() {
    auto pethu = new PethuImpl();
    pethu.SayTwice();
}
                                     
        
            
        
        
             Desktop,
            19 Сентября 2023
 Desktop,
            19 Сентября 2023
        
        
        
            
        
        
                0        
        
                            - 1
Тест потерянных комментариев
                                     
        
            
        
        
             Desktop,
            17 Сентября 2020
 Desktop,
            17 Сентября 2020
        
        
        
            
        
        
                0        
        
                            - 1
Тестовый тред, можно игнорить
                                     
        
            
        
        
             Desktop,
            07 Августа 2020
 Desktop,
            07 Августа 2020
        
        
        
            
        
        
                0        
        
                            - 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
- 49
#lang racket
(require racket/syntax)
(define-syntax (_total stx)
  (syntax-case stx ()
    [(_total item price amount)
     (let ([make-id
            (lambda (template . ids)
              (let ([str (apply format template (map syntax->datum ids))])
                (datum->syntax stx (string->symbol str))))])
       (with-syntax ([total-item-price (make-id "~a-price" #'item)]
                     )
         #'(begin
             (total-item-price price amount)
             )))]
    )
  )
(define-syntax-rule (total item price amount)
  (cond [(eq? item 'apple) (_total apple price amount)]
        [(eq? item 'grape) (_total grape price amount)]
        [else (_total general price amount)]
        )
  )
  
(define (apple-price price amount)
  (* price (- amount (/ amount 2)))
  )
(define (grape-price price amount)
  (* price (if (> amount 1) (/ (* amount 4) 5) amount))
  )
(define (general-price price amount)
  (* amount price)
  )
(define apples '(apple 10 4))
(define grapes '(grape 20 3))
(define other '(peach 30 1))
(foldl (λ (lst result)
         (+ result (total (car lst) (cadr lst) (caddr lst)))
         )
       0
       (list apples grapes other)
 )
                                     
        
            Когда у тебя есть macroмолоток, всё остальное кажется гвоздями.
        
        
             Desktop,
            07 Июня 2020
 Desktop,
            07 Июня 2020
        
        
        
            
        
        
                +1        
        
                            - 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
struct Ololo: Comparable {
    let value: Int
    
    static func < (lhs: Ololo, rhs: Ololo) -> Bool {
        return lhs.value < rhs.value
    }
    
    static func < (lhs: Ololo, rhs: Ololo) -> String {
        if lhs.value < rhs.value {
            return "LESS"
        } else if lhs.value > rhs.value {
            return "MORE"
        } else {
            return "EQUAL"
        }
    }
}
let ololo1 = Ololo(value: 100)
let ololo2 = Ololo(value: 200)
let bool: Bool = ololo1 < ololo2
let string: String = ololo1 < ololo2
                                     
        
            А в плюсах можно в operator> любую херь вернуть © jojaxon 
Наверное, я поторопился, когда сказал, что крестобляди будет в свифте тесно.
        
        
             Desktop,
            06 Июня 2020
 Desktop,
            06 Июня 2020
        
        
        
            
        
        
                +1        
        
                            - 1
https://github.com/oskusalerma/trelby/issues/85
                                     
        
            Сорян за пост-ссылку, но я тут валяюсь под столом просто.
Есть тулза для написания сценариев (для чего только нет тулзы, правда?). Она опенсурсная и при этом выглядит не как говно. Но, когда начинаешь её щупать, ВНЕЗАПНО оказывается, что буквы кириллицы в ней тупо не набираются. Лезешь в FAQ, там лежит ссылка на issue из поста. А уже там просто сказка!
Короч, автор примерно в 2007 году сходил почитал спеку пдф, обнаружил, что "PDF spec is oriented towards Latin-1" и решил, что это даёт ему моральное право забить болт на Unicode, а заодно utf-8 и унтерменш, которые не осилили самый тривиальный сабсет латиницы.
В 2012-ом после, судя по всему, многочисленных недоумённых вопросов автор снова появился на горизонте с тикетом на гитхабе и объяснениями в духе "Unicode нет и не будет, потому что не для тебя моя черешня цвела". Цитата для понимания майндсета чувака: "That's how it was 5 years ago anyway when I last looked at it; maybe the spec has improved since then?" 
В общем, выглядело так, будто дядя устал и решил, что пора бы всю эту хуйню переложить на чужие хрупкие плечи, у нас тут опенсурс тем более и все дела.
Но, когда в 2015-ом году появился некий анон с предложением все починить и даже какими-то наработками, автор ему сказал, что иди сука гоняй тесты (видимо, руками, потому что CI настроить он тоже не смог) на всех платформах, а то, вишь, "the old "I'll do the fun bits and let others do the boring bits" strategy. Good luck with that."
Короч чуваки ещё немного поспорили с этим аутистом, после чего съебались в туман, а тулза так кириллицу и не поддерживает.
Смешно и грустно.
        
        
             Desktop,
            05 Мая 2020
 Desktop,
            05 Мая 2020
        
        
        
            
        
        
                0        
        
                            - 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
import sequtils
when not declared(unzip):
  proc unzip*[S, T](s: openArray[(S, T)]): (seq[S], seq[T]) =
    result[0] = newSeq[S](s.len)
    result[1] = newSeq[T](s.len)
    for i in 0..<s.len:
      result[0][i] = s[i][0]
      result[1][i] = s[i][1]
let a = @[('a', 1), ('b', 2), ('c', 3)]
let b = unzip(a) # version 1.0 will use the proc declared above
                 # version 1.2 will use sequtils' proc
assert b == (@['a', 'b', 'c'], @[1, 2, 3])
                                     
        
            Если в библиотеке нет нужного метода, вы можете написать его сами и кинуть в сторону своих пользователей.
        
        
             Desktop,
            01 Мая 2020
 Desktop,
            01 Мая 2020
        
        
        
            
        
        
                0        
        
                            - 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
import ballerina/auth;
import ballerina/config;
import ballerina/http;
import ballerina/log;
auth:InboundBasicAuthProvider basicAuthProvider = new;
http:BasicAuthHandler basicAuthHandler = new (basicAuthProvider);
listener http:Listener ep = new (9090, config = {
    auth: {
        authHandlers: [basicAuthHandler]
    },
    secureSocket: {
        keyStore: {
            path: config:getAsString("b7a.home") +
                  "/bre/security/ballerinaKeystore.p12",
            password: "ballerina"
        }
    }
});
@http:ServiceConfig {
    basePath: "/hello",
    auth: {
        scopes: ["scope1"]
    }
}
service echo on ep {
    @http:ResourceConfig {
        methods: ["GET"],
        path: "/sayHello",
        auth: {
            scopes: ["scope2"]
        }
    }
    resource function hello(http:Caller caller, http:Request req) {
        error? result = caller->respond("Hello, World!!!");
        if (result is error) {
            log:printError("Error in responding to caller", result);
        }
    }
}
                                     
        
            Кто что думает про https://ballerina.io?
        
        
             Desktop,
            19 Апреля 2020
 Desktop,
            19 Апреля 2020
        
        
        
            
        
        
                0        
        
                            - 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
import Foundation
@objc protocol SomethingDoable {
    func doSomething()
}
class Inner: SomethingDoable {
    @objc func doSomething() {
        print("Inner!")
    }
}
@objc class Outer: NSObject {
    let inner: SomethingDoable = Inner()
    override func forwardingTarget(for aSelector: Selector!) -> Any? {
        return inner
    }
}
let outer = Outer()
outer.perform(#selector(SomethingDoable.doSomething))
                                     
        
            Удачного дебага!
        
        
             Desktop,
            27 Марта 2020
 Desktop,
            27 Марта 2020