randName
사람 이름을 생성해서 count개의 문자열로 돌려줍니다. 표기는 요청한 문자 체계를 따릅니다. output: 'detail'을 주면 문자열 대신 각 이름의 고유 표기와 로마자 표기를, 그 이름의 언어·성별과 함께 돌려줍니다.
import { randName } from 'randino';
randName();
// ['Emma Clover']import 'package:randino/randino.dart';
randName();
// ['Emma Clover']from randino import rand_name
rand_name()
# ['Emma Clover']옵션
모든 옵션은 선택 사항이며, 위의 인자 없는 호출이 사용하는 값이 곧 기본값입니다.
| 옵션 | 타입 | 기본값 | 설명 |
|---|---|---|---|
language | NameLanguageOptionNameLanguage?NameLanguageOption | 'all'null"all" | 생성할 이름의 언어. 'all'null"all"이면 지원하는 모든 언어를 섞어서 이름마다 하나씩 고릅니다. |
gender | NameGenderOptionNameGender?NameGenderOption | 'all'null"all" | 이름을 어느 풀에서 뽑을지. 생략하면 이름마다 성별을 하나씩 고릅니다. |
count | numberintint | 1 | 반환할 이름의 개수. 0 … 10000 범위로 제한됩니다. |
realism | RandRealism | <Lang js="'real'" dart="RandRealism.real" py="\"real\"" /> | real은 실제로 쓰이는 이름을, invented는 새로 만들어낸 이름을 뽑습니다. mixed는 요소마다 판단합니다. |
minLengthminLengthmin_length | numberint?int | None | 언어별 | 고유 표기의 최소 글자 수. |
maxLengthmaxLengthmax_length | numberint?int | None | 언어별 | 고유 표기의 최대 글자 수. |
includeSurnameincludeSurnameinclude_surname | booleanboolbool | truetrueTrue | 성을 포함합니다. |
includeMiddleNameincludeMiddleNameinclude_middle_name | booleanboolbool | falsefalseFalse | 중간 이름을 포함합니다. 중간 이름이 없는 언어에서는 무시됩니다. |
script | NameScript | 'native'NameScript.native"native" | 반환되는 문자열의 문자 체계. |
startsWithstartsWithstarts_with | stringString?str | —null"" | 고유 표기가 이 글자로 시작하는 이름만 반환합니다. 첫 글자만 사용하고 대소문자는 구분하지 않습니다. |
unique | booleanboolbool | falsefalseFalse | 같은 이름을 두 번 반환하지 않습니다. 조합이 바닥나면 count보다 적게 반환할 수 있습니다. |
output | RandOutputRandOutput | 'value'"value" | 문자열, 또는 이름마다 하나의 NameDetail. Dart에는 이 파라미터가 없습니다. 상세 출력을 참고하세요. |
random | () => numberRandom?Callable[[], float] | None | —nullNone | 무작위성을 어디서 가져올지. 난수원 고르기를 보세요. 기본값은 각 언어의 일반 난수 생성기입니다. |
minLengthminLengthmin_length와 maxLengthmaxLengthmax_length의 기본값은 각 언어의 고유 범위이며, 그 값은 nameLengthRange가 알려 줍니다. 이 기본값은 언어별로 결정되므로, 여러 언어를 섞어도 한국어 이름이 스페인어 이름의 길이에 맞춰 늘어나지 않습니다.상세 출력
output: 'detail'은 문자열 대신 각 이름을 두 문자 체계로 한 번에 돌려주고, 그 이름의 언어와 성별도 함께 알려 줍니다. 이름과 영어 발음을 나란히 보여 줄 때 유용하며, 여러 언어를 섞어 뽑을 때는 각 이름이 무엇인지 알기 위해 필요합니다. 이 형태에서는 고를 것이 없으므로 script는 무시됩니다.
Dart에는 인자에 따라 반환 타입이 달라지는 함수를 만들 방법이 없어서, 이 기능은 별도 함수 randNameDetails로 되어 있습니다. script를 제외하면 randName과 같은 파라미터를 받습니다.
import { randName } from 'randino';
randName({ language: 'ko', output: 'detail' });
// [{ native: '여미주', roman: 'Yeo Miju', language: 'ko', gender: 'female' }]import 'package:randino/randino.dart';
randNameDetails(language: NameLanguage.ko);
// [NameDetail(여미주, Yeo Miju, ko, female)]from randino import rand_name
rand_name(language="ko", output="detail")
# [NameDetail(native='여미주', roman='Yeo Miju', language='ko', gender='female')]각 항목은 NameDetail입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
native | stringStringstr | 해당 언어의 문자로 쓴 이름. |
roman | stringStringstr | native의 영어 발음. 영어에서는 native와 동일합니다. |
language | NameLanguage | 이 이름이 생성된 언어. 여러 언어를 섞을 때 이 함수를 쓰는 이유입니다. |
gender | NameGender | 이름을 뽑은 풀. |
예제
한 언어씩
randName({ language: 'ko', count: 3 });
// ['김태윤', '원동혁', '조진우']
randName({ language: 'ja', count: 3 });
// ['山崎愛菜', '加藤楓乃', '吉田直人']
randName({ language: 'ru', count: 2 });
// ['Дмитрий Соколов', 'Полина Морозова']randName(language: NameLanguage.ko, count: 3);
// ['김태윤', '원동혁', '조진우']
randName(language: NameLanguage.ja, count: 3);
// ['山崎愛菜', '加藤楓乃', '吉田直人']
randName(language: NameLanguage.ru, count: 2);
// ['Дмитрий Соколов', 'Полина Морозова']rand_name(language="ko", count=3)
# ['김태윤', '원동혁', '조진우']
rand_name(language="ja", count=3)
# ['山崎愛菜', '加藤楓乃', '吉田直人']
rand_name(language="ru", count=2)
# ['Дмитрий Соколов', 'Полина Морозова']언어를 생략하면 이름마다 9개 언어 중 하나를 골라서 생성합니다.
randName({ count: 5 });
// ['Nuria Ramírez', '조동민', 'Stella Reeves', 'Anna Mariani', 'Lê Phương']randName(count: 5);
// ['Nuria Ramírez', '조동민', 'Stella Reeves', 'Anna Mariani', 'Lê Phương']rand_name(count=5)
# ['Nuria Ramírez', '조동민', 'Stella Reeves', 'Anna Mariani', 'Lê Phương']이름의 구성 요소
randName({ language: 'en', count: 3, includeSurname: false });
// ['Rachel', 'Eliza', 'Tessa']
randName({ language: 'en', count: 3, includeMiddleName: true });
// ['Danielle Sylvia Owens', 'Gloria Harriet Norton', 'Peyton Beatrix Owens']randName(language: NameLanguage.en, count: 3, includeSurname: false);
// ['Rachel', 'Eliza', 'Tessa']
randName(language: NameLanguage.en, count: 3, includeMiddleName: true);
// ['Danielle Sylvia Owens', 'Gloria Harriet Norton', 'Peyton Beatrix Owens']rand_name(language="en", count=3, include_surname=False)
# ['Rachel', 'Eliza', 'Tessa']
rand_name(language="en", count=3, include_middle_name=True)
# ['Danielle Sylvia Owens', 'Gloria Harriet Norton', 'Peyton Beatrix Owens']한국어, 일본어, 중국어에는 중간 이름이 없으므로 includeMiddleNameincludeMiddleNameinclude_middle_name은 없는 이름을 만들어내는 대신 무시됩니다. nameSupportsMiddleName이 이를 직접 알려 줍니다.
로마자 표기
randName({ language: 'ko', count: 3, script: 'roman' });
// ['Kim Minjun', 'Won Donghyeok', 'Jo Jinu']
randName({ language: 'ja', count: 3, script: 'roman' });
// ['Yamazaki Aina', 'Kato Kaeno', 'Yoshida Naoyato']randName(language: NameLanguage.ko, count: 3, script: NameScript.roman);
// ['Kim Minjun', 'Won Donghyeok', 'Jo Jinu']
randName(language: NameLanguage.ja, count: 3, script: NameScript.roman);
// ['Yamazaki Aina', 'Kato Kaeno', 'Yoshida Naoyato']rand_name(language="ko", count=3, script="roman")
# ['Kim Minjun', 'Won Donghyeok', 'Jo Jinu']
rand_name(language="ja", count=3, script="roman")
# ['Yamazaki Aina', 'Kato Kaeno', 'Yoshida Naoyato']영어는 이미 라틴 알파벳으로 쓰이기 때문에 로마자 표기를 해도 아무것도 바뀌지 않는 유일한 언어입니다. 이를 알려 주는 것이 nameSupportsRoman입니다.
시작 글자
randName({ language: 'en', count: 3, startsWith: 'k' });
// ['Kayla Morgan', 'Keith Doyle', 'Kimberly Vaughn']randName(language: NameLanguage.en, count: 3, startsWith: 'k');
// ['Kayla Morgan', 'Keith Doyle', 'Kimberly Vaughn']rand_name(language="en", count=3, starts_with="k")
# ['Kayla Morgan', 'Keith Doyle', 'Kimberly Vaughn']실제 이름 중에 그 글자로 시작하는 것이 없어도 빈 결과가 아니라 이름을 돌려줍니다. 라틴 문자와 키릴 문자는 이름을 만들어내고(Q → Qivu Railooth), 한중일 문자는 그 글자 자체를 이름의 한 요소로 씁니다.
길이
randName({ language: 'en', count: 2, minLength: 20, maxLength: 25 });
// ['Josephine Adelaide Sinclair', 'Christina Genevieve Whitaker']randName(language: NameLanguage.en, count: 2, minLength: 20, maxLength: 25);
// ['Josephine Adelaide Sinclair', 'Christina Genevieve Whitaker']rand_name(language="en", count=2, min_length=20, max_length=25)
# ['Josephine Adelaide Sinclair', 'Christina Genevieve Whitaker']요청한 구조가 항상 우선합니다. 요청한 요소를 담기에 범위가 너무 좁으면, 성이나 중간 이름을 빼는 대신 생성기가 만들 수 있는 가장 가까운 이름을 돌려줍니다. 자세한 내용은 옵션의 동작 방식을 참고하세요.
이름과 발음을 나란히
for (const { native, roman } of randName({ language: 'ja', count: 3, output: 'detail' })) {
console.log(`${native} (${roman})`);
}
// 山崎愛菜 (Yamazaki Aina)
// 加藤楓乃 (Kato Kaeno)
// 吉田直人 (Yoshida Naoto)for (final detail in randNameDetails(language: NameLanguage.ja, count: 3)) {
print('${detail.native} (${detail.roman})');
}
// 山崎愛菜 (Yamazaki Aina)
// 加藤楓乃 (Kato Kaeno)
// 吉田直人 (Yoshida Naoto)for detail in rand_name(language="ja", count=3, output="detail"):
print(f"{detail.native} ({detail.roman})")
# 山崎愛菜 (Yamazaki Aina)
# 加藤楓乃 (Kato Kaeno)
# 吉田直人 (Yoshida Naoto)섞인 결과가 무엇인지 알기
randName({ count: 3, output: 'detail' });
// [
// { native: '조동민', roman: 'Jo Dongmin', language: 'ko', gender: 'male' },
// { native: 'Anna Mariani', roman: 'Anna Mariani', language: 'it', gender: 'female' },
// { native: 'Иванов Иван', roman: 'Ivanov Ivan', language: 'ru', gender: 'male' }
// ]randNameDetails(count: 3);
// [
// NameDetail(조동민, Jo Dongmin, ko, male),
// NameDetail(Anna Mariani, Anna Mariani, it, female),
// NameDetail(Иванов Иван, Ivanov Ivan, ru, male),
// ]rand_name(count=3, output="detail")
# [
# NameDetail(native='조동민', roman='Jo Dongmin', language='ko', gender='male'),
# NameDetail(native='Anna Mariani', roman='Anna Mariani', language='it', gender='female'),
# NameDetail(native='Иванов Иван', roman='Ivanov Ivan', language='ru', gender='male'),
# ]성별이 겉으로 드러나는 경우
대부분의 언어는 이름이 어느 풀에서 왔는지 드러내지 않습니다. 러시아어는 예외여서, 부칭과 성이 모두 굴절하므로 선택 결과를 눈으로 확인할 수 있습니다.
randName({ language: 'ru', gender: 'female', includeMiddleName: true, count: 2, output: 'detail' });
// [
// { native: 'Людмила Николаевна Богданова', roman: 'Lyudmila Nikolaevna Bogdanova', … },
// { native: 'Марина Максимовна Богданова', roman: 'Marina Maksimovna Bogdanova', … }
// ]randNameDetails(
language: NameLanguage.ru,
gender: NameGender.female,
includeMiddleName: true,
count: 2,
);
// [
// NameDetail(Людмила Николаевна Богданова, Lyudmila Nikolaevna Bogdanova, ru, female),
// NameDetail(Марина Максимовна Богданова, Marina Maksimovna Bogdanova, ru, female),
// ]rand_name(language="ru", gender="female", include_middle_name=True, count=2, output="detail")
# [
# NameDetail(native='Людмила Николаевна Богданова', roman='Lyudmila Nikolaevna Bogdanova', …),
# NameDetail(native='Марина Максимовна Богданова', roman='Marina Maksimovna Bogdanova', …),
# ]함께 보기
- 지원 언어 — 각 문자 체계가 영어 발음으로 바뀌는 방식.
nameLengthRange— 이름이 기본값으로 쓰는 길이 범위.nameSupportsMiddleName과nameSupportsRoman— 중간 이름과 로마자 표기를 지원하는지 알려 주는 두 함수.