Range literal (proposal)

From: Date: Tue, 04 Sep 2001 01:10:06 +0000
Subject: Range literal (proposal)
Groups: php.dev 
Request: Send a blank email to php-dev+get-65011@lists.php.net to get a copy of this message
It would be nice addition to have a Range literal in PHP. The "range()"
implements the functionality in part, but in an extremly ineffecient
manner. What I would like to see, is a builtin Range 'type', which only
holds the start and end points.

Let's consider some practical applications:

	1:
	$str = "this is a test string"; 
	$str[0...4] 			#=> "this"
	
	2:
	$arr = ['this', 'is', 'a', 'test']
	$arr[2..4]  		#=> ['is', 'a']

	3:
	$str = "hello world";
	$offset = 6;
	$end     = 11;
	
	substr($str, $offset...$end);  #=> "world"

	4:
	foreach ('a'..'d' as $chr) {
		print $chr;    
	}
		# Prints a,b,c 

	5:
	$range = 5...10;
	
	range_first($range); 	#=> 5
	range_last($range);		#=> 10
	range_size($range);    	#=> 6

	6:
	$range = range(0, 3);
	
	for ($i = 0; $i == $range; $++) {
		print $i;	
	}

		# Prints 0, 1, 2, 3

	$i = 0;
	while ($i == $range) {
		print $i++;
	}

		# Prints 0, 1, 2, 3

An implementation of my suggestion would obviously require some work
(hacking?) inside the Zend Engine, which, I believe, is best left up to
people with a understanding of its internals (which rules me out).

Let me know what you think.

Btw: Is there a PHP mechanism for language improvement suggestions (such as
Perl's RFC or Ruby's RCR)?

/A
--
Anders Johannsen, Denmark


Thread (2 messages)

« previous php.dev (#65011) next »