Update Files
This commit is contained in:
		
							
								
								
									
										91
									
								
								Kha/Tools/linux_x64/std/haxe/Rest.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								Kha/Tools/linux_x64/std/haxe/Rest.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,91 @@ | ||||
| package haxe; | ||||
|  | ||||
| import haxe.iterators.RestIterator; | ||||
| import haxe.iterators.RestKeyValueIterator; | ||||
|  | ||||
| private typedef NativeRest<T> = Array<T>; | ||||
|  | ||||
| /** | ||||
| 	A special type that represents a "rest" function argument. | ||||
| 	 | ||||
| 	The special `...` syntax can be used for convenience and improved readability: | ||||
|  | ||||
| 	```haxe | ||||
| 	function f(...rest:Int) { | ||||
| 		$type(rest); // haxe.Rest<Int> | ||||
| 	} | ||||
|  | ||||
| 	f(1, 2, 3); | ||||
|  | ||||
| 	final array = [1, 2, 3]; | ||||
| 	f(...array); | ||||
| 	``` | ||||
|  | ||||
| 	Should be used as a type for the last argument of a method, indicating that | ||||
| 	an arbitrary number of arguments of the given type can be passed to that method. | ||||
|  | ||||
| 	Allows to use array access by index to get values of rest arguments. | ||||
| 	If the index exceeds the amount of rest arguments passed, the result is unspecified. | ||||
| **/ | ||||
| @:coreApi | ||||
| abstract Rest<T>(NativeRest<T>) { | ||||
| 	/** Amount of arguments passed as rest arguments */ | ||||
| 	public var length(get,never):Int; | ||||
| 	inline function get_length():Int | ||||
| 		return this.length; | ||||
|  | ||||
| 	/** | ||||
| 		Create rest arguments using contents of `array`. | ||||
|  | ||||
| 		WARNING: | ||||
| 		Depending on a target platform modifying `array` after using this method | ||||
| 		may affect the created `Rest` instance. | ||||
| 		Use `Rest.of(array.copy())` to avoid that. | ||||
| 	**/ | ||||
| 	@:from static public inline function of<T>(array:Array<T>):Rest<T> | ||||
| 		return new Rest(array); | ||||
|  | ||||
| 	inline function new(array:Array<T>):Void | ||||
| 		this = array; | ||||
|  | ||||
| 	@:arrayAccess inline function get(index:Int):T | ||||
| 		return this[index]; | ||||
|  | ||||
| 	/** | ||||
| 		Creates an array containing all the values of rest arguments. | ||||
| 	**/ | ||||
| 	@:to public #if !cppia inline #end function toArray():Array<T> | ||||
| 		return this.copy(); | ||||
|  | ||||
| 	public inline function iterator():RestIterator<T> | ||||
| 		return new RestIterator<T>(this); | ||||
|  | ||||
| 	public inline function keyValueIterator():RestKeyValueIterator<T> | ||||
| 		return new RestKeyValueIterator<T>(this); | ||||
|  | ||||
| 	/** | ||||
| 		Create a new rest arguments collection by appending `item` to this one. | ||||
| 	**/ | ||||
| 	public function append(item:T):Rest<T> { | ||||
| 		var result = this.copy(); | ||||
| 		result.push(item); | ||||
| 		return new Rest(result); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 		Create a new rest arguments collection by prepending this one with `item`. | ||||
| 	**/ | ||||
| 	public function prepend(item:T):Rest<T> { | ||||
| 		var result = this.copy(); | ||||
| 		result.unshift(item); | ||||
| 		return new Rest(result); | ||||
| 	} | ||||
|  | ||||
| 	public inline function toString():String { | ||||
| 		#if (flash || js) | ||||
| 			return '[${this.toString()}]'; | ||||
| 		#else | ||||
| 			return this.toString(); | ||||
| 		#end | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user