Giter Site home page Giter Site logo

Comments (12)

jyounus avatar jyounus commented on July 18, 2024 1

If you do create a proposal, it would be better if Swift would do this without having to use the ".then" part (or maybe it was named something else).

The reason for that is because I love to use "Promises" for any async operations (take a look at a lib like PromiseKit http://promisekit.org/ ). Promises usually use .then(), so I'm not sure if there would be conflicts when using this lib.

from then.

wcatron avatar wcatron commented on July 18, 2024 1

@adrfer Thanks for making everyone aware of each other! @devxoul Done it? Far from it, but please do contribute on the mailing list. @erica's proposal looks nearly complete but I could not find it submitted on the Swift Evolution Repo and has not been edited for a few weeks (Need some collaborators?). We each have slightly different models with different goals. Here is the Then example code in the three different styles:

Mailing List "Inline Initializer" Restricted to initializers similar to then. However it acts as an initializer compared to code after (possible advantages). Also avoids $0 and has some ideas for handling self.

let label = UILabel {
    textAlignment = .Center
    textColor = .blackColor()
    text = "Hello, World!"
}

@erica's "Method Cascading" More comprehensive "method cascading" proposal. Applies to much more than initializers. Introduces "with" keyword. self is the label object.

with let label = UILabel() {
    textAlignment = .Center
    textColor = .blackColor()
    text = "Hello, World!"
}

Then Possible syntax proposal, not sure how you were envisioning it but this is similar to how you had it. Maintains self.

let label = UILabel() then {
    label.textAlignment = .Center
    label.textColor = .blackColor()
    label.text = "Hello, World!"
}

So can we come to an agreement, create a proposal, and submit it for review? Perhaps we can build off of the "Method Cascading" and bring in maintaining self and drop the with keyword? Perhaps the with is only required when self is desired?

from then.

devxoul avatar devxoul commented on July 18, 2024

Awesome, sounds interesting. What could I do?

from then.

Ashton-W avatar Ashton-W commented on July 18, 2024

Start a thread on the mailing list to see what other people think, and start writing the proposal using the swift evolution template. Best of luck

from then.

devxoul avatar devxoul commented on July 18, 2024

Thank you! I'll take a look soon πŸ˜„

from then.

adrfer avatar adrfer commented on July 18, 2024

@devxoul I'd suggest you to take a look at this thread https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151228/005122.html

@jyounus there's a pull request by @basvankuijck that provides an alternate syntax

from then.

devxoul avatar devxoul commented on July 18, 2024

@adrfer, Cool. Someone has already done it. How can I lend weight to this suggestion?

from then.

adrfer avatar adrfer commented on July 18, 2024

@devxoul perhaps, after reading the related threads, take a look at @erica's https://gist.github.com/erica/eb32feb22ba99629285a

Sure you guys can put together and submit a great proposal πŸ‘Œ

from then.

NicholasTD07 avatar NicholasTD07 commented on July 18, 2024

Then, or the concept of Inline Initializer, really looked very promising at first glance to me. Because in many projects I set properties of a UI in its lazy initialization.

However, soon I found out that compared to lazy initialization of a var, then is almost useless in most of my use cases because you cannot reference self in a then block but you can do that in lazy initialization blocks.

For example, I can reference another instance var in a controller or a view, or assign the controller itself self to be the datasource or the delegate of a UITableView or UICollectionView, when using lazy initialization blocks.

from then.

erica avatar erica commented on July 18, 2024

Chris Lattner asked that it be submitted as a bug report instead of advancing as a proposal. It was. https://bugs.swift.org/browse/SR-160 https://bugs.swift.org/browse/SR-160

-- E

On Jan 4, 2016, at 2:20 AM, Nicholas T. [email protected] wrote:

Then, or the concept of Inline Initializer, really looked very promising at first glance to me. Because in many projects I set properties of a UI in its lazy initialization.

However, soon I found out that compared to lazy initialization of a var, then is almost useless in most use cases because you cannot reference self in a then block but you can do that in lazy initialization blocks.

For example, I can reference another instance var in a controller or a view, or assign the controller itself self to be the datasource or the delegate of a UITableView or UICollectionView, when using lazy initialization blocks.

β€”
Reply to this email directly or view it on GitHub #2 (comment).

from then.

devxoul avatar devxoul commented on July 18, 2024

@wcatron, thanks for asking. Of course I hope it to be adopted to Swift grammar πŸ˜„

from then.

rv-17 avatar rv-17 commented on July 18, 2024

It would be much less a PITA to have something like Kotlin's with() plus IDE support.

from then.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.