Zagadka...

pyt Q

String to NIE JEST array of chars: technicznie , tak. Skladnie PHP byla podyktowana skladnia C, gdzie nie bylo stringow tylko tablice znakow (char)

odp A

class buffer { private $body; //
public function __construct ($string = '') { $this-body = $string; // }
public function Write ($char, $position = DEFAULT) { $this-body [$position] = $char; // } }
strzasnie to przekombinowane. JA bym zrobil tak:
class buffer { private $body; //
public function __construct () { $this->body = array(); // } public function Write ($char, $position = DEFAULT) { $this->body [$position] = $char; // } public function getString() { return implode("",$this->body); } }

odp A

Dnia Sat, 03 Jan +, ScriptKid :
String to NIE JEST array of chars:
technicznie , tak. Skladnie PHP byla podyktowana skladnia C, gdzie nie bylo stringow tylko tablice znakow (char)
the_foe pisze:
No własnie technicznie: NIE. Tylko niekiedy zachowują się jak tablice (odczyt po indeksie), w większości semantycznych przypadków niestety zupełnie inaczej - patrz poczatek dyskusji.
Stringi są zawsze indeksowane od 0, nie mogą mieć kluczy asocjacyjnych, strlen vs count, inna reprezentacja i gospodarka w pamięci, składnia inicjalizacji

odp A

strzasnie to przekombinowane. JA bym zrobil tak:
class buffer { public function __construct () { $this-body = array(); // }
public function Write ($char, $position = DEFAULT) { $this-body [$position] = $char; // } } public function getString() { return implode("",$this-body); }
the_foe pisze:
No nie bardzo - przy przypisaniu do nieistniejącego indeksu Twoje tablicowe rozwiązanie dopisze po prostu element pod nowym indexem, a ja sobie chciałem za darmo wykorzystać ów sprytny php'owy 'padding' spacjami przy rozwiązaniu ze stringiem
Tak na prawdę, to, co jest bardziej przekombinowane: czy prosty dostęp przez odwołanie do pola prywatnego, czy za każdą próbą dostępu konwersja danej tablicowej do stringa zewnętrzną funkcją, wymagającą stałej i wykonania kopii parametru aktualnego: tegoż pola prywatnego - to to jest ewidentnie kwestia gustu, the_foe :D
ScriptKid

Dodaj odpowiedź

Tytuł:

Mail: (w celu weryfikacji posta)