> On Sep 6, 2016, at 9:39 PM, Michael Sheaver via swift-users 
> <swift-users@swift.org> wrote:
> 
> I know that in some languages, if you prepend the passed parameter with a 
> '$', as in $propertyName, the receiving function knows to use the contents of 
> the variable named propertyName (in this case "calendar") instead of the 
> literal string "propertyName". 

No, you can’t do that. The languages I think you’re referring to — PHP, Perl — 
are interpreted scripting languages. Very different beasts, where everything is 
dynamic and looked up at runtime. (Generally all objects are implemented as 
dictionaries with property names as keys, making it easy to look up properties 
by name.) Swift is more like C or C++.

Now, Objective-C has a fairly dynamic runtime that allows you to do this. 
Objects have a method valueForKey that takes a string and finds a property of 
the object with that name and returns its value. You can do this in Swift (on 
Apple platforms) if the class inherits from NSObject or has the @objc 
attribute. But this isn’t “pure” Swift; it’s an Objective-C feature you’re 
accessing through bridging.

Generally, there are other patterns that are used to get this sort of effect in 
languages that aren’t so dynamic (like C++ for example.) But we’d need to know 
more about the higher-level problem you’re trying to solve, to give advice on 
that.

—Jens
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to