[swift-users] Trouble with function properties
Doug Hill
swiftusers at breaqz.com
Wed Jun 15 22:13:30 CDT 2016
Thank you Saagar for looking over this code for me. I guess I got really caught up in the weird diagnostic message and assumed things weren’t working.
Now I see that ‘afunc’ works as I expected:
60> g.afunc(numberRecords:1,userRecord:(13,9))
13 9
$R3: (Int, (Int, Int)) = {
0 = 13
1 = {
0 = 9
1 = 1
}
}
Although I would be interested in why the compiler spits out the first message in the first place (e.g. the message with the strange description of afunc).
Looking forward to see what I can do with Swift,
Doug Hill
> On Jun 15, 2016, at 6:49 PM, Saagar Jha <saagarjha28 at gmail.com> wrote:
>
> `Gen` defines `afunc`, but you’re trying to access `aFunc`.
>
> On Wed, Jun 15, 2016 at 6:22 PM Doug Hill via swift-users <swift-users at swift.org <mailto:swift-users at swift.org>> wrote:
> I’m just starting to learn Swift and attempting to do some functional-style programming. Specifically I’m learning how to create generic algorithms that can be reused for many different types.
> What I’m attempting to do is create a new object, passing functions to the initializer. The class would store these functions as properties and then use them for functional-style algorithms.
>
> The problem is I’m running into weird compiler errors/messages that I’m trying to figure out. I'm hoping someone here can give me some pointers on what these errors mean, and most likely what I’m doing wrong.
>
> Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31) Target: x86_64-apple-macosx10.9
>
> // =====================================================================
> class Gen<InputKeyType, InputValueType, OutputKeyType, OutputValueType> {
> typealias func1Type = (numberRecords:InputKeyType, userRecord: InputValueType ) -> (OutputKeyType, OutputValueType)
>
> var afunc: func1Type
>
> init( inFunc: func1Type ) {
> afunc = inFunc
> }
> }
>
> var g: Gen<Int, (Int, Int), Int, (Int, Int)> =
> Gen( inFunc: { (numberRecords: Int, userRecord: (Int, Int)) -> (Int, (Int, Int)) in
> var b: Int = numberRecords
> var (age, numFriends) = userRecord
> print( (age), (numFriends) )
> return (age, (numFriends, 1))
> }
> )
> // =====================================================================
>
> What I get as output from the Swift compiler are these confusing messages. I included some print statements that hopefully gives some more info about what’s happening.
>
> g: Gen<Int, (Int, Int), Int, (Int, Int)> = {
> afunc = 0x00000001012024d0 $__lldb_expr7`partial apply forwarder for reabstraction thunk helper from @callee_owned (@unowned Swift.Int, @unowned Swift.Int, @unowned Swift.Int) -> (@unowned (Swift.Int, (Swift.Int, Swift.Int))) to @callee_owned (@in Swift.Int, @in (Swift.Int, Swift.Int)) -> (@out (Swift.Int, (Swift.Int, Swift.Int))) at repl6.swift
> }
>
> print( (g) )
> Gen<Swift.Int, (Swift.Int, Swift.Int), Swift.Int, (Swift.Int, Swift.Int)>
>
> print( (g.aFunc) )
> repl.swift:48:9: error: value of type 'Gen<Int, (Int, Int), Int, (Int, Int)>' has no member 'aFunc'
> ^ ~~~~~
>
> There’s a good chance I’m doing something wrong but I don’t know how to figure out what that problem is. Any ideas?
>
> Thanks.
>
> Doug
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org <mailto:swift-users at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-users <https://lists.swift.org/mailman/listinfo/swift-users>
> --
> -Saagar Jha
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160615/92d326d1/attachment.html>
More information about the swift-users
mailing list