Předávání řetězce odkazem v různých programovacích jazycích zahrnuje použití specifických mechanismů nebo konstrukcí, které umožňují funkci přímo upravit původní řetězec, spíše než pracovat s kopií. Zde vysvětlím, jak toho dosáhnout v C++, C#, Pythonu a JavaScriptu.
Obsah
- Jak předat řetězec funkci pomocí volání podle reference v C#
- Jak předat řetězec funkci pomocí Call by Reference v Javě
- Jak předat řetězec funkci pomocí Call by Reference v Pythonu
- Jak předat řetězec funkci pomocí volání podle reference v JavaScriptu
Jak předat řetězec funkci pomocí volání podle reference v C++
V C++ můžete předat řetězec odkazem pomocí „
&'>symbol v seznamu parametrů funkce. To vám umožní upravit původní řetězec přímo ve funkci.
Například:
C++
#include> #include> // using '&' symbol before the name of the string> void> modifyString(std::string& str)> {> >str =>'Modified string'>;> }> int> main()> {> >std::string myString =>'Original string'>;> >modifyString(myString);> >std::cout << myString> ><< std::endl;>// Output: 'Modified string'> >return> 0;> }> |
>
Java třídí seznam
>Výstup
Modified string>
Jak předat řetězec funkci pomocí Call by Reference v Javě
Řetězec nemůžete předat odkazem přímo, protože Java je jazyk pro předávání hodnot a řetězce jsou neměnné. Podobného efektu však můžete dosáhnout použitím proměnných datových struktur nebo zapouzdřením řetězce do vlastního objektu.
Použití proměnlivé datové struktury (StringBuilder)
Můžete použítStringBuilder>class, což je proměnlivá sekvence znaků, k úpravě objektu podobného řetězci a jeho předání funkci. Ačkoli to není striktně předávání řetězce odkazem, umožňuje vám to dosáhnout požadovaného efektu úpravy původního objektu podobného řetězci.
kroky:
- Vytvořit
StringBuilder>objekt s počátečním řetězcem. - Předat
StringBuilder>namítat funkci. - Upravte
StringBuilder>objekt ve funkci. - Přístup k upravenému řetězci z
StringBuilder>objekt po volání funkce.
Příklad:
Jáva
srovnatelný seznam
public> class> StringModificationExample {> >static> void> modifyString(StringBuilder strBuilder) {> >strBuilder.append(>' (Modified)'>);> >}> >public> static> void> main(String[] args) {> >StringBuilder myStringBuilder =>new> StringBuilder(>'Original String'>);> >modifyString(myStringBuilder);> >String myString = myStringBuilder.toString();> >System.out.println(myString);>// Output: 'Original String (Modified)'> >}> }> |
>
>Výstup
Original String (Modified)>
Jak předat řetězec funkci pomocí volání podle reference v C#
V C# můžete předat řetězec odkazem pomocí '
ref'>klíčové slovo v seznamu parametrů funkce. To vám umožní upravit původní řetězec přímo ve funkci.
Příklad:
C#
datum na řetězec
using> System;> class> Program {> >static> void> ModifyString(>ref> string> str) {> >str =>'Modified string'>;> >}> >static> void> Main() {> >string> myString =>'Original string'>;> >ModifyString(>ref> myString);> >Console.WriteLine(myString);>// Output: 'Modified string'> >}> }> |
>
>
jaká je velikost mého monitoruVýstup
Modified string>
Jak předat řetězec funkci pomocí Call by Reference v Pythonu
V Pythonu jsou řetězce neměnné, takže je nemůžete předat odkazem. Toto omezení však můžete obejít pomocí míjení měnitelná datová struktura, jako je a seznam a poté jej převést zpět na řetězec V případě potřeby.
Příklad:
Krajta
def> modify_string(string_list):> >string_list[>0>]>=> 'Modified string'> my_string_list>=> [>'Original string'>]> modify_string(my_string_list)> my_string>=> my_string_list[>0>]> print>(my_string)># Output: 'Modified string'> |
>
>Výstup
Modified string>
Jak předat řetězec funkci pomocí volání podle reference v JavaScriptu
V JavaScriptu můžete dosáhnout podobného efektu pomocí předání objektu s vlastností, která drží řetězec . Pak můžete upravit vlastnost ve funkci.
topologie
Příklad:
Javascript
function> modifyString(obj) {> >obj.str =>'Modified string'>;> }> const myObj = { str:>'Original string'> };> modifyString(myObj);> const myString = myObj.str;> console.log(myString);>// Output: 'Modified string'> |
>
>Výstup
Modified string>
V těchto programovacích jazycích můžete předávat řetězce odkazem (nebo podobným efektem) pomocí technik specifických pro daný jazyk. Je však nezbytné znát pravidla a datové struktury jazyka, protože neměnnost řetězců v Pythonu a JavaScriptu může ovlivnit váš přístup.