Hi Jordan,

> The stripped-down code seems like it could use any unique key, including 
> #function.


That would work only if #function could be used with an argument just like 
#selector:

class DirectoryListingStub: DirectoryListing {

   var cannedOutput: [Selector: Any?] = [
       #function(contentsOfDirectory(at:includingPropertiesForKeys:options:)): 
nil
   ]

   func contentsOfDirectory(at url: URL, includingPropertiesForKeys keys: 
[URLResourceKey]?, options: FileManager.DirectoryEnumerationOptions) throws -> 
[URL] {
       return cannedOutput[#function] as! [URL]
   }

}

Obviously, this doesn’t work as #function takes no arguments.

There's no way to get #selector for the current method. And there’s no way to 
get #function for arbitrary method.

R+

> On 14 Nov 2016, at 20:07, Jordan Rose <jordan_r...@apple.com> wrote:
> 
> This doesn’t seem unreasonable, but I’m not sure if that makes it reasonable. 
> :-) What’s your use case? The stripped-down code seems like it could use any 
> unique key, including #function.
> 
> Jordan
> 
> 
>> On Nov 13, 2016, at 15:50, Rudolf Adamkovič via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> Hi there!
>> 
>> in Swift 3, we now have #selector and #keyPath yet there’s still no _cmd 
>> like we have in Objective-C.
>> 
>> Example:
>> 
>> class DirectoryListingStub: DirectoryListing {
>> 
>>   var cannedOutput: [Selector: Any?] = [
>>       
>> #selector(contentsOfDirectory(at:includingPropertiesForKeys:options:)): nil
>>   ]
>> 
>>   dynamic func contentsOfDirectory(at url: URL, includingPropertiesForKeys 
>> keys: [URLResourceKey]?, options: FileManager.DirectoryEnumerationOptions) 
>> throws -> [URL] {
>>       let selector = 
>> #selector(contentsOfDirectory(at:includingPropertiesForKeys:options:))
>>       return cannedOutput[selector] as!  [URL]
>>   }
>> 
>> }
>> 
>> Problem: I had to specify #selector twice.
>> 
>> I though I’d be able to use #function but:
>> 
>> #selector = contentsOfDirectoryAt:includingPropertiesForKeys:options:error:
>> #function = contentsOfDirectory(at:includingPropertiesForKeys:options:)
>> 
>> It’d be great if #selector (without arguments) returned the current selector.
>> 
>> Or am I missing something?
>> 
>> R+
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to