powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / StringBuffer в Scheme
7 сообщений из 7, страница 1 из 1
StringBuffer в Scheme
    #37779527
h869311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В Java есть очень удобный класс для работы с изменяемыми строками -- StringBuffer.
Подскажите, есть ли средства для работы со строками в Scheme, которые реализуют
возможности getChar, setCharAt, то есть, чтобы была возможность получить i-ый символ
в строке и установить его? Да, кстати, нумерация символов в строке в Scheme начинается
с нуля или единицы?
...
Рейтинг: 0 / 0
StringBuffer в Scheme
    #37779570
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
h869311,

StringBuilder в Java не совсем для этого был сделан, а так строки в Scheme изменяемы:

Код: plaintext
1.
2.
3.
4.
5.
6.
> (define s "a")
> (string-ref s 0)
#\a
> (string-set! s 0 #\b)
> s
"b"

Правда в Racket они по-умолчанию немутабельны, подробности в документации.
Нумерация с нуля.
...
Рейтинг: 0 / 0
StringBuffer в Scheme
    #37779581
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... странно, раньше вроде литералами создавались мутабельные строки. В общем вот для разных диалектов в Racket:

Код: plaintext
1.
2.
3.
4.
5.
6.
#lang racket

(define s (make-string 3 #\*))
(string-set! s 0 #\a)
(string-set! s 1 #\b)
(display s)

Код: plaintext
1.
2.
3.
4.
5.
6.
#lang r5rs

(define s (make-string 3 #\*))
(string-set! s 0 #\a)
(string-set! s 1 #\b)
(display s)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
#lang r6rs

(import (rnrs)
        (rnrs mutable-strings (6)))

(define s (make-string 3 #\*))
(string-set! s 0 #\a)
(string-set! s 1 #\b)
(display s)
...
Рейтинг: 0 / 0
StringBuffer в Scheme
    #37779590
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, похоже это implementation-dependent, сейчас попробовал в Gambit:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
~ $ gsi
Gambit v4.6.5

> (define s "***")
> (string-set! s 0 #\a)
> (string-set! s 1 #\b)
> (display s)
ab*
> (string-set! "***" 1 #\b) 
>   ; никаких ошибок
...
Рейтинг: 0 / 0
StringBuffer в Scheme
    #37779596
h869311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как сделать перенос строки, если она некрасиво смотрится на одной строке,
но так, чтобы туда не поместились ненужные символы, вроде переноса строки и возврата каретки?
...
Рейтинг: 0 / 0
StringBuffer в Scheme
    #37779601
h869311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
просто в Java можно было сделать "abc"
+ "def"
и все в порядке
...
Рейтинг: 0 / 0
StringBuffer в Scheme
    #37779620
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
h869311А как сделать перенос строки, если она некрасиво смотрится на одной строке,
но так, чтобы туда не поместились ненужные символы, вроде переноса строки и возврата каретки?

Они туда поместятся, так же как и в джаве, как иначе-то? разница в способе печати

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
#lang r5rs

(define (print-by proc)
  (lambda (s)
    (proc s)
    (newline)
    (newline)))

(define new-line (string #\Newline))

(for-each (print-by display)
          (list "abc\ndef"
                (string-append "abc" "\n" "def")
                (string-append "abc" new-line "def")))

(for-each (print-by write)
          (list "abc\ndef"
                (string-append "abc" "\n" "def")
                (string-append "abc" new-line "def")))

; =>

Добро пожаловать в DrRacket, версия 5.2.1 [3m].
Язык: r5rs; memory limit: 1024 MB.
abc
def

abc
def

abc
def

"abc\ndef"

"abc\ndef"

"abc\ndef"

> 
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / StringBuffer в Scheme
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]