This (プログラミング)

thisは、プログラミング言語に出てくる概念のひとつで、自身の動いているオブジェクトを指す予約語。主にインスタンスメソッド内で使用される。thisの他にselfMeといった語を使う言語もあるが、言語を問わず概念は共通しているので、以下ではthisで代表させて記述することとする。

概要

thisは現在のオブジェクトを指した参照、あるいはポインタであり、たいていの場合は変更不可能である。

オブジェクトが生成すると、thisへの参照はつねに有効なものとなる。これは明示的に参照しなければならない言語もあれば、静的スコープで暗黙のうちに解決している言語もある。ただし、thisを暗黙のうちに解決する言語でも、明示的にthisを必要とする場面(ローカル変数で隠蔽されている同名のメンバー変数を参照する場合や、自身への参照を返り値とする場合など)もある。

thisはメソッドへの引数となっている。例えば、C++で書いた以下のようなメソッドは、

int foo::print (bar x)

本質的にはC言語での以下のような呼び出しに相当している。

int foo_print (foo *const this, bar x)

PythonPerl 5など、言語によってはthisをメソッドへの1つ目の引数として明記する必要がある。この引数の名前をthisselfとする必然性はなく、他の引数と同様にどんな名前を付けても文法上問題はない。ただし、通常の場合、PythonやPerlでは慣習的にselfが使われる。

GCCなど、一部のC++コンパイラでは、thisを引数に明示することで、その型を別なポインタに変えることができる[1]

C++Javaでの静的メソッドはインスタンスに対応せずクラスに所属するものであるため、thisは使えない。PythonRubySmalltalkObjective-Cなどでは、「クラスオブジェクト」のメソッド(クラスメソッド)となっていて、thisはクラスオブジェクトを指す。

言語ごとの事情

C++

初期のバージョンの C++ ではthisを変更でき、メソッド内から動作するオブジェクトを切り替えることができたが、のちに不可能となり、this右辺値となっている[2]

初期の C++ には参照がなかったが、もし最初から参照があったとしたら、thisはポインタではなく参照となっていたであろう[3]

C++ では、delete thisとすることで、オブジェクトが自ら消えることができる。

C#

C# では、thisは現在のインスタンスのメンバーを参照するのに用いられる。

特徴的な点として、C#の値型ではメンバー参照に加え、thisを代入式の左辺に置いて自分自身の値を書き換えることができる。 C#7.2で追加されたreadonly構造体では、このthisの書き換えを禁止できる。

struct MyStruct {
    // 読み取り専用フィールド
    public readonly int Num;

    public MyStruct(int num) {
        Num = num;
    }

    public void ChangeThis() {
        // 自分自身を書き換える
        // フィールドは読み取り専用にもかかわらず、全体が書き換わる
        this = new MyStruct(Num + 1);
    }
}

// readonly構造体ではこの書き換えはできない。
readonly struct MyStruct {
    // ...
}

Dylan

Dylan では多重ディスパッチが行われ、thisという概念がないが、メッセージをあるオブジェクトに送るという意識は文法に残っている。下に示した2つの記法は糖衣構文であり、同等に動作する。

  • object.method(param1, param2)
  • method (object, param1, param2)

Java

Java では、thisは現在のインスタンスを指すキーワードであり、クラスの値やメソッドを参照するのに用いられる。Java ではインスタンスメソッドがすべて仮想メソッドなので、thisnull となることはない。

JavaScript

プロトタイプベースオブジェクト指向言語である JavaScript では、関数はオブジェクトに属している(メソッドである)ことも、属さないでいる(ただの関数である)こともできる。したがって、thisが何を指しているかは、関数の呼び出し方によって異なっている。

多くの場面では、クラスベースオブジェクト指向言語の this と同じように使うことができる。たとえば、

object.notify = function () { alert (this); };
object.notify();

のように関数(object.notify)をメソッドとして呼び出した場合、thisobjectを指す。また、

Counter = function () { this.counter_value = 0; };
c = new Counter();

のように new を付けて関数(Counter)をコンストラクタとして呼び出した場合、this は新しく生成されるオブジェクトを指す[4]

関数を単独で呼び出す場合は、thisはstrict-mode中であればundefinedであり、そうでなければグローバルオブジェクトを指すが、thisが何を指すかを個別に指定して呼び出すこともできる。(Function.prototype.apply) [5]

Object Pascal

Object Pascal では self が使われる。

Objective-C

Objective-C では self が使われる。

PHP

PHPでは、this が使われる。

Python

Python では、thisは文法上の予約語ではないが、自動的に対象となるオブジェクトが渡される、メンバ関数の1つ目の引数となっている。慣習的に、この引数の名前としてselfが使われる。classmethod修飾子を付けて定義されたクラスメソッドでは、1つ目の引数にクラスオブジェクトそのものが渡される。staticmethod修飾子を付けて作られた静的メソッドでは、1つ目の引数に何かが自動的に渡されることはない。

Ruby

Ruby では self が使われる。

Self

Self 言語は、「self」が使われることが名前の由来となっている。

Smalltalk

Smalltalk では self が使われる。

Visual Basic

Visual Basicでは Me が使われる。

脚注

外部リンク

Read other articles:

Ikan datu Status konservasi Risiko Rendah (IUCN 3.1)[1] Klasifikasi ilmiah Domain: Eukaryota Kerajaan: Animalia Filum: Chordata Kelas: Actinopterygii Ordo: Carangiformes Famili: Carangidae Subfamili: Naucratinae Genus: SeriolinaWakiya, 1924 Spesies: Seriolina nigrofasciataRüppell, 1829 Sinonim[2] Nomeus nigrofasciatus Rüppell, 1829 Seriola nigrofasciata (Rüppell, 1829) Zonichthys nigrofasciata (Rüppell, 1829) Seriola intermedia Temminck & Schlegel, 1845 Datu ( Se...

 

Danish television series The KingdomThe title screen for RigetAlso known asThe Kingdom IIThe Kingdom: ExodusDanishRiget, Riget II, Riget: Exodus GenreAbsurdist comedyBlack comedyMedical dramaParanormalPsychological dramaSupernatural horrorCreated byLars von Trier and Tómas GislasonWritten byLars von Trier (seasons 1-3)Niels Vørsel (seasons 1-3)Tómas Gislason (season 1)Directed byLars von Trier (seasons 1-3)Morten Arnfred (seasons 1-2)Starring Ernst-Hugo Järegård Kirsten Rolffes Holger Ju...

 

Basketball leagueABA League Second DivisionABA2 League Vertical logoFoundedJuly 2017; 6 years ago (2017-07)First season2017–18Country Bosnia and Herzegovina Croatia Montenegro North Macedonia Serbia SloveniaConfederationFIBA EuropeNumber of teams14Level on pyramid2ndPromotion toABA League First DivisionSupercupABA SupercupInternational cup(s)Champions LeagueCurrent champions Krka (2nd title) (2022–23)Most championships Krka (2 titles)TV...

H.Bahrain KasubaS.Pd., M.Pd. Bupati Halmahera Selatan ke-2Masa jabatan23 Mei 2016 – 23 Mei 2021PresidenJoko WidodoGubernurAbdul Ghani KasubaWakilIswan Hasjim PendahuluMuhammad KasubaHelmi Surya Botutihe (Plh.)PenggantiPetahana Informasi pribadiLahir29 Januari 1967 (umur 57)Bibinoi, Bacan Timur Tengah, Halmahera Selatan, Maluku Utara, IndonesiaKebangsaanIndonesiaPartai politikPKS (2003–2018)PKPI (2018–2023)PDI-P (2023–Sekarang)Suami/istriNurlaila Muhamad (istri kedua)...

 

2020 Ohio Senate election ← 2018 November 3, 2020 (2020-11-03) 2022 → 16 seats from even-numbered districts in the Ohio Senate17 seats needed for a majorityTurnout74.0% (2.7pp)[a]   Majority party Minority party   Leader Larry Obhof Kenny Yuko Party Republican Democratic Leader since January 3, 2019 April 26, 2017 Leader's seat District 22 District 25 Seats before 24 9 Seats after 25 8 Seat change 1 1 Popular...

 

International airport in Varanasi, Uttar Pradesh, India Lal Bahadur Shastri International Airport IATA: VNSICAO: VEBNSummaryAirport typePublicOwnerGovernment of IndiaOperatorAirports Authority of IndiaServesVaranasiLocationBabatpur, Varanasi district, Uttar Pradesh, IndiaElevation AMSL270 ft / 82.30 mCoordinates25°27′08″N 082°51′34″E / 25.45222°N 82.85944°E / 25.45222; 82.85944WebsiteVaranasi AirportMapVNSLocation of airport in Uttar PradeshS...

Untuk kegunaan lain, lihat Bangkok (disambiguasi). Bangkok กรุงเทพมหานคร (บางกอก)Krung Thep Mah̄ā NakhonDari atas, kiri ke kanan: Wat Benchamabophit, Cakrawala Sungai Chav Picchraya, Istana megah, Ayunan Raksasa, lalu lintas di jalan di Distrik Watthana, Monumen Demokrasi, dan Wat Arun BenderaLambangLokasi Bangkok di ThailandBangkokLokasi Bangkok di ThailandKoordinat: 13°45′02″N 100°29′33″E / 13.75058°N 100.49258°E / ...

 

FA Cup 1999-2000 Competizione FA Cup Sport Calcio Edizione 119ª Organizzatore FA Luogo  Inghilterra Risultati Vincitore  Chelsea(3º titolo) Secondo  Aston Villa Semi-finalisti  Newcastle Utd Bolton Cronologia della competizione 1998-99 2000-01 Manuale La FA Cup 1999-2000 è stata la centodiciannovesima edizione della competizione calcistica più antica del mondo. È stata vinta dal Chelsea contro l'Aston Villa nell'ultima finale di Fa Cup disputata al vecchio Wembl...

 

Call of Duty: Modern Warfare 2 adalah permainan video penembak orang pertama yang dikembangkan oleh Infinity Ward dan diterbitkan oleh Activision. Dirilis di seluruh dunia pada 10 November 2009, itu menimbulkan beberapa kontroversi. Salah satu kontroversi yang paling bisa dibilang terkenal ini ditemukan di level keempat permainan, No Russian, di mana pemain mengontrol agen CIA yang menyamar yang berpartisipasi dalam penembakan massal di bandara Moskow untuk mendapatkan kepercayaan dari kelomp...

English-American novelist (1904–1986) Christopher IsherwoodIsherwood in 1938BornChristopher William Bradshaw Isherwood(1904-08-26)26 August 1904High Lane, Cheshire, EnglandDied4 January 1986(1986-01-04) (aged 81)Santa Monica, California, U.S.OccupationNovelistCitizenshipBritish (1904–1946) American (1946–1986)Alma materCorpus Christi College, Cambridge King's College LondonGenreModernismNotable works The Berlin Stories Mr Norris Changes Trains (1935) Goodbye to Berlin (1939) A...

 

Park in Norfolk, Virginia Town Point Park Town Point Park is a 7-acre (2.8 ha)[1] waterfront city park on the Elizabeth River in Norfolk, Virginia, USA. The park hosts major outdoor concerts, award-winning festivals and special events each year to include Norfolk Harborfest, Bayou Boogaloo, and 4 July Celebrations. Norfolk Festevents programs Town Point Park on behalf of the City of Norfolk. Located in the park are The Homecoming and the Armed Forces Memorial. The Armed Forces Me...

 

Questa voce sull'argomento linguisti tedeschi è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Friedrich August Wolf Friedrich August Wolf (Hainrode, 15 febbraio 1759 – Marsiglia, 8 agosto 1824) è stato un filologo classico, grecista e studioso dell'antichità tedesco. Medaglia commemorativa di Friedrich August Wolf (1840) Indice 1 Biografia 2 Opere 3 Traduzioni e studi 4 Note 5 Bibliografia 6 Altri progetti 7 Collegamenti esterni Biografia Allievo ...

尊敬的拿督赛夫丁阿都拉Saifuddin bin Abdullah国会议员馬來西亞国会下议院英迪拉马哥打现任就任日期2018年7月16日 (2018-07-16)前任法兹阿都拉曼(希盟公正党)多数票10,950(2018) 马来西亚外交部长任期2021年8月30日—2022年11月24日君主最高元首苏丹阿都拉首相依斯迈沙比里副职卡玛鲁丁查化(国盟土团党)前任希山慕丁(国阵巫统)继任赞比里(国阵巫统)任期2018年7月2�...

 

Pour les articles homonymes, voir Alba. Alba Armoiries Vue d'ensemble de la ville. Noms Nom français Albe Nom piémontais Alba, Ârba (Piémontais des Langhe) Administration Pays Italie Région Piémont  Province Coni  Maire Mandat Carlo Bo 27/05/2019 Code postal 12051 Code ISTAT 004003 Code cadastral A124 Préfixe tel. 0173 Démographie Gentilé Albesi Population 31 210 hab. (1er janvier 2023[1]) Densité 582 hab./km2 Géographie Coordonnées 44° 42′ 0...

 

Pecut kuda Klasifikasi ilmiah Kerajaan: Plantae (tanpa takson): Tracheophyta (tanpa takson): Angiospermae (tanpa takson): Eudikotil (tanpa takson): Asterid Ordo: Lamiales Famili: Verbenaceae Genus: Stachytarpheta Spesies: Stachytarpheta cayennensis(Rich.) Vahl Sinonim[1] Abena cayennensis (Rich.) Hitchc. Lippia cylindrica Scheele Stachytarpheta australis Moldenke Stachytarpheta dichotoma (Ruiz & Pav.) Vahl Stachytarpheta gibberosa Rchb. Stachytarpheta guatemalensis Moldenke Stach...

Anti-apartheid protest movement regarding statues at the University of Cape Town in South Africa Rhodes Must FallThe statue at the centre of the controversy: a statue of Cecil Rhodes by Marion Walgate (1934)Date9 March 2015 (2015-03-09)LocationUniversity of Cape TownCaused byPerceived lack of transformation in South Africa following colonialism and apartheid[1]GoalsRemoval of the statue of Cecil Rhodes on campus, decolonisation of education and racial transformation at ...

 

Device used to cut paper into pieces This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Paper shredder – news · newspapers · books · scholar · JSTOR (May 2021...

 

2017 single by Pink What About UsSingle by Pinkfrom the album Beautiful Trauma ReleasedAugust 10, 2017 (2017-08-10)Genre EDM electropop[1] Length4:29LabelRCASongwriter(s) Pink Johnny McDaid Steve Mac Producer(s)Steve MacPink singles chronology Waterfall (2017) What About Us (2017) Beautiful Trauma (2017) Music videoWhat About Us on YouTube What About Us is a song recorded by the American singer-songwriter Pink for her seventh studio album Beautiful Trauma (2017). RC...

伊比卡雷Ibicaré市镇伊比卡雷在巴西的位置坐标:27°05′31″S 51°21′54″W / 27.0919°S 51.365°W / -27.0919; -51.365国家巴西州圣卡塔琳娜州面积 • 总计150.512 平方公里(58.113 平方英里)海拔550 公尺(1,800 英尺)人口(2007) • 總計3,390人 • 密度22.5人/平方公里(58.3人/平方英里) 伊比卡雷(葡萄牙语:Ibicaré)是巴西圣卡塔琳...

 

German biologist (1828–1898) Ferdinand CohnBornFerdinand Julius Cohn(1828-01-24)24 January 1828Breslau, Silesia, Kingdom of PrussiaDied25 June 1898(1898-06-25) (aged 70)Breslau, German EmpireResting placeBreslau Jewish Cemetery[1]Alma materUniversity of BerlinSpouse Pauline Reichenback ​(m. 1867)​RelativesOskar Justinus (brother)Max Conrat [de] (brother)Hugo Conrat [Wikidata] (brother)Ilse Twardowski-Conrat (niece)Eric...